检查是否在全球范围内安装了特定的NPM软件包

时间:2019-05-30 18:04:26

标签: node.js npm child-process

我正在尝试检查是否使用Node.js在全球范围内安装/可用了特定的npm软件包。我通过npm命令npm list -g --depth=0列出了全局依赖项/软件包。所以我尝试了这段代码。

const {exec} = require("child_process");

exec("npm list -g --depth=0",(err, stdout, stderr) => {
   if (err) {
     console.error(err);
     return;
    }
  console.log(stdout);
});

然后它会抛出这样的错误

enter image description here

PS:我也尝试使用npm list -g --depth=0 | grep nodemon,但是我不能在命令提示符下使用它。所以上面的代码是错误的吗?如何使用nodejs检查软件包是否在任何操作系统上全局安装?

1 个答案:

答案 0 :(得分:1)

您的npm.js文件中的代码看起来不错,应该可以成功运行-假设:

  • 当您直接在CLI中运行npm list -g --depth=0时,您确实会获得所需的结果。
  • 您正在运行的nodejs版本确实支持ES6功能,例如 Object Destructuring Arrow函数

问题是nodejs脚本的文件命名-不要将其命名为npm.js

您需要将文件重命名为其他名称,例如get-global-pkgs.js

然后cdget-global-pkgs.js所在的目录,并运行以下命令之一:

node get-global-pkgs.js

node get-global-pkgs

即不带后缀.js


注意:仅在文件内容使用infinite scrolling和/或exec()方法以及给定命令时,文件npm.js的命名似乎才是问题。导致http GET请求。