node.js - npm 包安装在意外的位置

标签 node.js npm

我最近创建了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 + 预提交-lint@1.0.1 在 1.457 秒内更新了 1 个包

安装位置出乎我的意料。

为什么我的包会安装在:

/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 命令,并在其输出中找到了这一行:

前缀=“/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 的前缀设置为/usr/local,就像我家用的 Linux 笔记本电脑一样。根据npm docs ,这是大多数系统上的默认值。在我的工作笔记本电脑的早期,我可能无意中搞砸了一些东西。

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

npm 配置设置前缀“/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/

相关文章:

node.js - 如何将 Angular 2 应用程序与 .net core 连接

javascript - 在 Express 中间件中提供自定义参数

node.js - 为什么 Node 更喜欢错误优先回调?

npm - "yarn build "命令有什么作用? "npm build "和 "yarn build"是类似的命令吗?

npm - 在 Prestashop 1.7 中安装 Webpack : package. json => 没有这样的文件

javascript - 使用 module.exports 上面的函数可以吗?

javascript - 模块化 node.js/socket.io/express 应用程序的最佳方法

node.js - Ember-CLI "You don' t 有权访问此文件”

npm - 为什么 npm list 在添加 yarn 后会显示缺失和无关的错误?

typescript - KotlinJS 生成的 npm 链接包