npm 安装错误,错误为:ENOENT,chmod

新手上路,请多包涵

我正在尝试全局安装我刚刚发布的 npm 模块。每次我尝试从 npm 或文件夹安装时,都会收到此错误。

 npm ERR! Error: ENOENT, chmod '/usr/local/lib/node_modules/takeapeek/lib/cmd.js'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Linux 3.8.0-19-generic
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "takeapeek"
npm ERR! cwd /home/giodamlio
npm ERR! node -v v0.10.6
npm ERR! npm -v 1.3.6
npm ERR! path /usr/local/lib/node_modules/takeapeek/lib/cmd.js
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /home/giodamlio/npm-debug.log
npm ERR! not ok code 0

我正在使用 sudo 并且我已经对包中的所有内容进行了三次检查,一切都应该正常工作。我做了一些搜索,看到了几个类似的案例,但都没有解决。这是我尝试过的。

  • 升级 npm ( sudo npm install -g npm )
  • 清除全局 npm 缓存( sudo npm cache clear
  • 清除用户 npm 缓存( npm cache clear

我注意到该错误与我链接到路径的文件有关,特别是当 npm 尝试执行 chmod 时。这应该不是问题,我的 lib/cli.js 具有正常权限,而 npm 在此安装期间具有超级用户权限。

在浏览了 npm 文档后,我发现了一个选项可以阻止 npm 制作 bin 链接( --no-bin-links ),当我尝试使用它进行安装时,它运行良好。

那么有什么关系呢?这是一些尚未解决的 奇怪的边缘案例错误 吗?

编辑:供参考, 是我上传的模块

原文由 giodamelio 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

好的,看起来 NPM 正在使用您的 .gitignore 作为 .npmignore 文件的基础,因此忽略 /lib 。如果您将空白 .npmignore 文件添加到应用程序的根目录中,则一切正常。

更好、更明确的方法是使用允许列表而不是禁止列表,并使用 package.json 中的“文件”字段来指定包中的文件。

[编辑] - 有关此行为的更多信息: https ://docs.npmjs.com/cli/v7/using-npm/developers#keeping-files-out-of-your-package

原文由 badsyntax 发布,翻译遵循 CC BY-SA 4.0 许可协议

我遇到了类似的问题,

 npm cache clean

解决了它。

原文由 Genjuro 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题