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,我有三重检查包中的一切,一切都应该工作。 我做了一些四处搜寻,并看到一些similer案件都没有解决。 这是我试过的。
- 升级npm(
sudo npm install -g npm
) - 清除全局npmcaching(
sudo npm cache clear
) - 清除用户npmcaching(
npm cache clear
)
我注意到,错误必须与我链接到path的文件,特别是当npm试图做一个chmod。 这应该不是一个问题,我的lib/cli.js
具有正常的权限,并且在安装过程中npm拥有超级用户权限。
通过npm文档挖掘后,我发现一个选项,将停止npm制作bin链接( --no-bin-links
),当我尝试安装它,它工作正常。
那么交易是什么? 这是一些奇怪的边缘案例缺陷 ,没有解决scheme吗?
编辑:作为参考, 这里是我上传的模块
好吧,它看起来像NPM使用.gitignore
作为.npmignore
文件的基础,因此忽略/lib
。 如果您将一个空白的.npmignore
文件添加到您的应用程序的根目录,一切都应该工作。
– 有关此行为的更多信息,请访问: https : //docs.npmjs.com/misc/developers#keeping-files-out-of-your-package
我遇到了类似的问题,
npm cache clean
解决了它。
当我尝试运行npm install -g bower
时,这个问题在Mac上出现了。 这是给我一些错误,因为无法find像优雅的fs的东西。 我不知道我最初是如何安装npm的,但是看起来也许它是用节点使用自制软件的。 我第一次跑
brew uninstall node
这从我的path中删除node
和npm
。 从那里我刚刚重新安装它
brew install node
当它完成时,我有我的path上的node
和npm
,我能够运行
rm -rf ~/.npm npm install -g bower
这然后成功安装了凉亭。
更新酿造公式和升级安装似乎没有为我工作,我不知道为什么。 删除.npm
文件夹是其他人已经工作的东西,我曾尝试过没有成功。 这次我做了这个以防万一。 还要注意的是,以下两种情况都不能解决我的问题,尽pipe它为其他人解决了这个问题:
npm cache clean sudo npm cache clean
我得到这个错误在npm安装和添加.npmignore没有解决它。
错误:ENOENT,stat'C:\ Users \ My-UserName \ AppData \ Roaming \ npm'
我试图去提到的文件夹,它不存在。 当我在漫游文件夹中创build npm文件夹时,该错误已得到解决。
这是在Windows 8.1上
我有同样的问题,只是发现一个处理没有提到这里。 虽然我会贡献给社区:
npm install -g myapp
不复制bin
目录。 我发现这是因为我没有将它包含在我的package.json
中的files
中
"files": [ "lib", "bin" // this was missing ]
在尝试npm install
一堆依赖项时,我收到了类似的错误信息。 结果发现其中一些未能在Debian / Ubuntu上安装,因为他们希望/usr/bin/node
成为可执行的节点。 要解决,你需要做的
sudo ln -s nodejs /usr/bin/node
或更好,
sudo apt-get install nodejs-legacy
欲了解更多信息: https : //stackoverflow.com/a/21171188/7581
我想你的已编译的咖啡脚本从发布的npm包中丢失了。 尝试编写预发布命令。
在我的情况下(多个代码ENOENT errno 34)的问题是~/.npm/
目录访问。 里面有一些有root:root
权限的子目录root:root
权限,当我以普通用户的身份运行命令(没有sudo
)的时候,会造成问题。 于是我把~/.npm/
dir里的所有子目录和文件的所有权都改成了我的本地用户和组。 这在我的Ubuntu(在Mac上也应该工作)的技巧。
$ sudo chown yourusername.yourgroupname ~/.npm/ -R
你应该知道你的用户名,对吧? 如果没有,那么运行$ whoami
并用它replace你的组名,如下所示:
$ sudo chown johnb.johnb ~/.npm/ -R
编辑:
testing案例 :
从我的本地帐户/home/johnb
我npm安装全球一些发电机yeoman
,像这样:
$ sudo npm install -g generator-laravel
问题性质 :
上面的行为导致一些依赖被安装在~/.npm/
dir里面,拥有root:root
所有权(因为sudo ...
)。 很明显,当拉取依赖关系并将它们写入本地用户~/.npm/
时,npm不会以本地用户身份运行(或者更改依赖关系后继所有者)。 只要npm会对基本的unix文件系统安全问题如此不小心,问题就会再次出现。
解答 :
-
持续检查
~/.npm/
包含除本地用户帐户以外的所有权(和/或权限)的子目录,尤其是当您使用sodo
(root)安装或更新某些内容时。 如果是这样,请将~/.npm/
的所有权以recursion方式更改为本地用户。 -
npm, bower, grunt, ...
询问npm, bower, grunt, ...
社区他们是如何解决这个问题的。
我试图安装一个grunt插件时出现这个错误。 我发现我有一个过时的版本的NPM和错误消失后更新npm到最新版本
npm install -g npm
我在本地安装的npm install
上遇到类似的错误:
npm ERR! enoent ENOENT: no such file or directory, stat '[path/to/local/installation]/node_modules/grunt-contrib-jst'
我不确定是什么原因导致了这个错误,但是我最近在本地安装了一些新的节点模块,用自制软件升级了节点,然后运行'npm update -g'。
我能够解决问题的唯一方法是完全删除本地node_modules目录并再次运行npm install
:
cd [path/to/local/installation] npm rm -rdf node_modules npm install
我尝试了所有在网上find的东西( npm cache clear
和rm -rf ~/.npm
),但似乎没有任何效果。 什么解决了这个问题是更新节点(和NPM)到最新版本。 试试看
在Windows中,我有一个类似的错误。 search粘贴应用数据并searchstringnpm
。
我在atlasboard\lib\package-dependency-manager.js
和atlasboard\lib\cli\commands.js
中用'npm.cmd'
replace了string'npm'
(包括引号)。 这解决了这个问题。
在全局安装( npm install -g mymodule
)期间,与不存在的脚本进行封装的过程相同。
在package.json中:
... "bin": { "module": "./bin/module" }, ...
但./bin/module
不存在,因为它被命名为modulejs
。
- 安装最新版本的节点
- 运行:npm cache clean
- 运行:npm install cordova -g
我特别有类似的问题:ERR! enoent ENOENT:没有这样的文件或目录,chmod'node_modules / npm / node_modules / request / node_modules / http-signature / node_modules / sshpk / bin / sshpk-conv我尝试了所有上述解决scheme,但没有运气。 我使用的是stream浪箱,而且这个项目在一个共享文件夹中。 问题似乎只在那里,当我把项目移动到另一个不共享的文件夹(好主人),瞧! 问题解决了。 以防万一另一个人也使用stream浪汉
我有一个类似的问题,不同的原因: yo node
生成器已经添加"files": ["lib/"]
到我的package.json
,因为我的cli.js
在lib/
目录之外,它跳过时发布到npm。
(Yeoman问题在https://github.com/yeoman/generator-node/issues/63它应该很快被修复。);
我得到错误“错误:ENOENT,stat'C:\ Users \ userName \ AppData \ Roaming \ npm'。
我最近升级到Windows 7 x64机器上的节点4.2.1。 运行时
npm install -g bower
我有一个类似的错误:
npm ERR! ENOENT:没有这样的文件或目录,打开'C:\ Users \ THE_USERNAME \ AppData \ Local \ Temp \ npm-THE_HASH'
认为它与AppDatapath有关,我玩弄了
npm config edit
和
npm config edit --global
更改前缀,caching和tmp字段,但收到与新path相同的错误:
npm ERR! ENOENT:没有这样的文件或目录,打开'C:\ Users \ THE_USERNAME \ npm-temp \ npm-THE_HASH'
所有的命令都以pipe理员身份运行,所以我拥有完全的权限。
然后我认为现有的文件有一些问题,所以我跑了:
npm cache clean
但是得到了同样的错误。 但是,还是有一些临时文件在附近。 用cygwin手动删除所有临时数据终于为我解决了这个问题:
rm -rf bower bower.cmd node_modules etc
如果你只有Windows cmd,你可以使用类似的东西
rmdir /S THE_TEMP_DIR
删除所有的子目录(尽pipe如果你有深度嵌套的节点依赖关系,这是出了名的问题)
所以,也许有一些问题升级NPM和凉亭或其他包的版本挂起。 在我看来,这似乎是问题所在
安装离子时,我得到了错误
115648 error enoent ENOENT:no such file or directory,rename'C:\ Users \ UserName \ AppData \ Roaming \ npm \ node_modules.staging \ ansi-b11f0c4b' – >'C:\ Users \ UserName \ AppData \ Roaming \ npm \ node_modules \离子\ node_modules \cordova-LIB \ node_modules \ ANSI”
在那条路上没有叫做ansi
文件夹。 我在那里创build它,并正确安装。
如果您尝试在您的项目目录中进行“安装”,出现此错误,您可以尝试:
rm -rf ./node_modules npm cache clear npm remove sails
那么你可以尝试“make install”
如果你有“npm ERR!enoent ENOENT:no such file or directory,chmod'… / djam-backend / node_modules / js-beautify / js / bin / css-beautify.js'”,那么你可以尝试安装一些以前版本的js-beautify,更多评论: https : //github.com/beautify-web/js-beautify/issues/1247
"dependencies": { ... "js-beautify": "1.6.14" ... }
并运行“make install”。 在这种情况下,如果没有其他需要更高版本(1.7.0)的依赖关系,则可能会出现这种情况,您还必须在packages.json中降级此包。
要么
以上都没有为我工作。 但yarn install
工作,然后npm i
开始工作。 不知道什么纱线固定,但快速和简单的解决scheme!
请试试这个
SET HTTP_PROXY=<proxy_name>
然后尝试一下命令,它会起作用