我最近创建了my first npm package,当我尝试使用npm install -g pre-commit-lint在运行macOS的计算机上安装它时,得到以下输出:

/usr/local/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/bin/pc-lint -> /usr/local/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/pre-commit-lint/index.js+ pre-commit-lint@1.0.1updated 1 package in 1.457s

安装位置对我来说是非常意外的。

为什么将我的软件包安装在:

/usr/local/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/

代替:

/usr/local/lib/node_modules/

最佳答案

经过进一步研究,我发现了npm config ls -l命令,在输出中,我找到了这一行:

prefix = "/usr/local/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node"

这似乎是造成奇怪路径的原因。

我不知道如何设置默认值。我的同事的Mac和家用Linux笔记本电脑的prefix都设置为/usr/local。根据npm docs,这是大多数系统上的默认设置。在工作笔记本电脑的初期,我可能会无意间弄乱了一些东西。

要解决此问题,我运行以下命令来覆盖默认的prefix值:

npm config set prefix "/usr/local"

然后,我卸载并重新安装了我的软件包,二进制文件出现在:

/usr/local/bin/


代替:

/usr/local/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/lib/node_modules/node/bin/

现在一切都按预期进行。

关于node.js - npm软件包安装在意外位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54068431/

10-12 00:11
查看更多