npm安装错误错误:ENOENT,chmod

gio*_*lio 109 permissions sudo install node.js npm

我正在尝试全局安装我刚刚发布的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
Run Code Online (Sandbox Code Playgroud)

我正在使用sudo,我已经三次检查包中的一切都应该工作.我做了一些搜索,看到了几个similer案件,但都没有解决.这是我试过的.

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

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

在深入了解npm文档后,我找到了一个选项,可以阻止npm创建bin links(--no-bin-links),当我尝试使用它时,它运行正常.

那是什么交易?这是一些奇怪的边缘案例错误还没有解决方案吗?

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

bad*_*tax 117

好吧,看起来NPM正在使用你.gitignore作为.npmignore文件的基础,因而忽略了/lib.如果将空白.npmignore文件添加到应用程序的根目录中,则一切都应该有效.

[编辑] - 有关此行为的更多信息,请访问:https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package

  • 删除 package-lock.json 文件 (6认同)
  • 3小时的挫折感降临到我的.gitignore中的一行,这一行吓坏了npm install -g.疯. (3认同)
  • '为NAL键入NUL> .npmignore' (2认同)

Gen*_*uro 99

我遇到了类似的问题,

npm cache clean
Run Code Online (Sandbox Code Playgroud)

解决了它.

  • 我试过`npm cache verify`并且它有效.谢谢你的提示. (8认同)
  • 从 npm@5 开始,npm 缓存可以从损坏问题中自我修复,并且从缓存中提取的数据保证是有效的。如果您想确保一切都一致,请改用“npm 缓存验证”。另一方面,如果您正在调试安装程序的问题,则可以使用“npm install --cache /tmp/empty-cache”来使用临时缓存,而不是破坏实际缓存。 (2认同)

use*_*019 9

当我试图运行时,我在Mac上以某种方式出现了这个问题npm install -g bower.由于无法找到优雅-fs之类的东西,它给了我一些错误.我不知道我最初是如何安装npm的,但看起来它可能是使用自制软件的节点.我先跑了

brew uninstall node
Run Code Online (Sandbox Code Playgroud)

这同时取出node,并npm在我的道路.从那里我刚重新安装它

brew install node
Run Code Online (Sandbox Code Playgroud)

当它完成了我nodenpm我的道路,我是能够运行

rm -rf ~/.npm
npm install -g bower
Run Code Online (Sandbox Code Playgroud)

然后成功安装了凉亭.

更新brew公式和升级安装似乎对我没有用,我不知道为什么.删除.npm文件夹对其他人来说是有用的,我试过没有成功.我这次是为了以防万一.另请注意,以下这两个问题都没有解决我的问题,尽管它对其他人有所帮助:

npm cache clean
sudo npm cache clean
Run Code Online (Sandbox Code Playgroud)


Vij*_*mma 9

我在npm install上添加了这个错误并添加.npmignore没有解决它.

错误:ENOENT,stat'C:\ Users\My-UserName\AppData\Roaming \npm'

我试着去上面提到的文件夹而且它不存在.我在Roaming文件夹中创建 npm文件夹时修复了错误.

这是在Windows 8.1上


Ian*_*Ian 9

升级到 npm 后我遇到了类似的行为6.1.0。它似乎工作过一次,但后来我在尝试安装由文件系统上的路径指定的包时进入了此错误状态:

npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename
Run Code Online (Sandbox Code Playgroud)

以下事情没有解决问题

  • rm -rf node_modules
  • npm cache clean(给npm ERR! As of npm@5, the npm cache self-heals.... use 'npm cache verify' instead.
  • npm cache verify
  • rm -rf ~/.npm

如何解决这个问题的

  • rm package-lock.json


Pra*_*thy 6

我在尝试安装 grunt 插件时遇到此错误。我发现我的 npm 版本已过时,并且将 npm 更新到最新版本后错误消失了

npm install -g npm
Run Code Online (Sandbox Code Playgroud)


Cla*_*ark 6

删除 package-lock.json 文件然后运行npm install


dth*_*ree 5

我遇到了同样的问题,刚刚发现这里没有提到的处理。虽然我会为社区做出贡献:

npm install -g myapp没有复制bin目录。我发现这是因为我没有将它包含files在我的package.json

"files": [
  "lib",
  "bin" // this was missing
]
Run Code Online (Sandbox Code Playgroud)