我正在尝试检查是否使用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);
});
然后它会抛出这样的错误
PS:我也尝试使用npm list -g --depth=0 | grep nodemon
,但是我不能在命令提示符下使用它。所以上面的代码是错误的吗?如何使用nodejs检查软件包是否在任何操作系统上全局安装?
答案 0 :(得分:1)
您的npm.js
文件中的代码看起来不错,应该可以成功运行-假设:
npm list -g --depth=0
时,您确实会获得所需的结果。问题是nodejs脚本的文件命名-不要将其命名为npm.js
。
您需要将文件重命名为其他名称,例如get-global-pkgs.js
。
然后cd
到get-global-pkgs.js
所在的目录,并运行以下命令之一:
node get-global-pkgs.js
或
node get-global-pkgs
即不带后缀.js
注意:仅在文件内容使用infinite scrolling和/或exec()
方法以及给定命令时,文件npm.js
的命名似乎才是问题。导致http GET
请求。