npm安装错误错误:ENOENT,chmod

时间:2013-08-01 09:49:11

标签: node.js permissions install npm sudo

我正在尝试全局安装刚刚发布的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
  • 清除全局npm缓存(sudo npm cache clear
  • 清除用户npm缓存(npm cache clear

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

在深入研究npm文档后,我发现了一个阻止npm创建bin链接(--no-bin-links)的选项,当我尝试使用它时,它运行正常。

那是什么交易?这有些weird fringe case bug还没有解决方案吗?

修改:作为参考,here是我上传的模块

36 个答案:

答案 0 :(得分:111)

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

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

答案 1 :(得分:97)

我遇到了类似的问题,

npm cache clean

解决了它。

答案 2 :(得分:9)

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

brew uninstall node

这从我的路径中删除了nodenpm。从那里我刚重新安装它

brew install node

完成后我的路径上有nodenpm,我可以运行

rm -rf ~/.npm
npm install -g bower

然后成功安装了凉亭。

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

npm cache clean
sudo npm cache clean

答案 3 :(得分:9)

我在npm install上收到此错误并添加.npmignore没有解决它。

  

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

我试着去提到的文件夹但它不存在。 在漫游文件夹中创建 npm 文件夹时,错误已得到修复。

这是在Windows 8.1

答案 4 :(得分:4)

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

npm install -g myapp未复制bin目录。我发现这是因为我没有将其包含在files

package.json
"files": [
  "lib",
  "bin" // this was missing
]

答案 5 :(得分:3)

我在本地安装npm install上收到类似的错误:

npm ERR! enoent ENOENT: no such file or directory, stat '[path/to/local/installation]/node_modules/grunt-contrib-jst'

我不确定导致错误的原因,但我最近在本地安装了几个新的节点模块,使用自制程序升级了节点,然后运行&nbsp; npm update -g&#39;。

我能够解决问题的唯一方法是完全删除本地node_modules目录并再次运行npm install

cd [path/to/local/installation]
npm rm -rdf node_modules
npm install

答案 6 :(得分:3)

在尝试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

答案 7 :(得分:2)

我认为已发布的npm包中缺少已编译的咖啡脚本。尝试编写prepublish命令。

答案 8 :(得分:2)

我有一个类似的问题: 呃! enoent ENOENT:没有这样的文件或目录,chmod&#39; node_modules / npm / node_modules / request / node_modules / http-signature / node_modules / sshpk / bin / sshpk-conv 我尝试了以上所有解决方案但没有运气。 我使用的是流浪盒,项目位于共享文件夹中。当我将项目移动到另一个不共享的文件夹(woth host)时,问题似乎只存在,瞧!问题解决了。 以防其他人使用流浪汉

答案 9 :(得分:2)

我在尝试安装grunt插件时遇到此错误。我发现我有一个过时的npm版本,并且在将npm更新到最新版本

后错误消失了
npm install -g npm

答案 10 :(得分:2)

在我的情况下(多个代码ENOENT errno 34)问题是~/.npm/目录访问。其中有一些具有root:root权限的子目录,当我以普通用户身份运行命令(没有sudo)时会导致问题。所以我将~/.npm/ dir中所有子目录和文件的所有权更改为我的本地用户和组。这就是我的Ubuntu上的技巧(在Mac上也应该有效)。

$ sudo chown yourusername.yourgroupname ~/.npm/ -R

你应该知道你的用户名,对吗?如果不是,则运行$ whoami并用它替换您的组名称,如下所示:

$ sudo chown johnb.johnb ~/.npm/ -R

编辑:

测试用例

从我的本地帐户/home/johnb我全局安装了yeoman的一些生成器,如下所示:

$ sudo npm install -g generator-laravel

问题性

以上操作导致某些依赖项安装在~/.npm/目录中,拥有root:root所有权(因为sudo ...)。显然,在提取依赖关系并将它们写入本地用户子目录~/.npm/时,npm不会以本地用户身份运行(或者之后更改依赖关系子目录所有权)。 只要npm对基本的unix文件系统安全问题如此粗心,问题就会再次发生。

<强>解决方案

  1. 不断检查~/.npm/是否包含除本地用户帐户以外的所有权(和/或权限)的子目录,尤其是在使用sodo(root)安装或更新某些内容时。如果是,请以递归方式将~/.npm/内的所有权更改为本地用户。

  2. npm, bower, grunt, ...社区按照我上面的描述解决此问题。

答案 11 :(得分:1)

小心package.json中键“目录”和“文件”的无效值

如果您从一个新的应用程序开始,并且想要完全空白,则必须 从一个完整的空文件夹开始,或者在其中包含有效的package.json文件。

如果您不想首先创建package.json文件,只需键入:npm i some_package

名称为“ some_package”的软件包应正确安装在新的子文件夹“ node_modules”中。

如果首先创建package.json文件,请输入:npm init 保留所有默认值(只需单击ENTER),您应该得到一个有效的文件。

它应该像这样:

{
  "name": "yourfoldername",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

请注意,缺少以下键:“ 目录”,“ 存储库”和“ 文件”。如果您对“ 目录”和/或“ 文件”使用了错误的值,则似乎无法安装该软件包。遗漏了这些密钥,为我解决了这个问题。

也请注意键“ main ”。存在此值,但它确实包含无效值。尚无文件“ index.js”。您可以安全地删除它。

现在输入:npm i some_package 并将名称为“ some_package”的软件包正确安装在新的子文件夹“ node_modules”中。

答案 12 :(得分:1)

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

npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename

以下内容未能解决问题

  • 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

答案 13 :(得分:1)

在webpack的Docker容器中npm出现类似错误。该问题是由docker run的--user命令行参数引起的,因为其中的给定用户和组以某种方式弄乱了本地卷上的权限。希望这对某人有帮助:)

答案 14 :(得分:1)

尝试了几乎所有内容,然后终于做到了:

只需删除node_modules,然后再次运行'npm install'

答案 15 :(得分:1)

如果你的node.js也以某种方式损坏,你可能会收到此错误。我通过卸载/重新启动/安装node.js完全修复了这个错误,它修复了这个错误,以及引发的其他三个神秘错误。

答案 16 :(得分:1)

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

答案 17 :(得分:1)

那是因为没有package.json,只有package-lock.json

试试:npm init --yes

答案 18 :(得分:1)

  1. 安装最新版本的节点
  2. 运行:npm cache clean
  3. 运行:npm install cordova -g

答案 19 :(得分:1)

我尝试了我在网上找到的所有内容(npm cache clearrm -rf ~/.npm),但似乎没有任何效果。解决这个问题的原因是将node(和npm)更新到最新版本。试试吧。

答案 20 :(得分:1)

在Windows中我遇到了类似的错误。 搜索粘贴应用数据并搜索字符串npm

我在'npm''npm.cmd'中用atlasboard\lib\package-dependency-manager.js替换了字符串atlasboard\lib\cli\commands.js(包括引号)。这解决了问题。

答案 21 :(得分:1)

对于包含不存在脚本的程序包,在全局安装(npm install -g mymodule)期间出现相同的错误。

在package.json中:

    ...
    "bin": {
      "module": "./bin/module"
    },
    ...

但是./bin/module不存在,因为它被命名为modulejs

答案 22 :(得分:0)

我得到了简单的解决方案,只需清除 npm cache

sudo npm cache clear --force

然后删除 node_modulespackage-lock.json

sudo rm -rf node_modules
sudo rm -rf package-lock.json

现在使用 npm 安装依赖模块并启动服务器

npm install && npm start

答案 23 :(得分:0)

安装离子时我得到以下错误

  

115648错误enoent ENOENT:没有这样的文件或目录,重命名   &#39; C:\ Users \用户名\应用程序数据\漫游\ NPM \ node_modules.staging \ ANSI-b11f0c4b&#39;    - &GT; &#39; C:\ Users \用户名\应用程序数据\漫游\ NPM \ node_modules \离子\ node_modules \科尔多瓦-LIB \ node_modules \ ANSI&#39;

该路径上没有名为ansi的文件夹。我在那里创建并正确安装。

答案 24 :(得分:0)

node_modules 目录可以在另一个应用程序中打开,例如“neatbeans”,并且禁止创建/重命名文件

可笑——在 Windows 10 机器上——这是我唯一的问题

答案 25 :(得分:0)

关闭 Android Studio 为我解决了这个错误。

答案 26 :(得分:0)

我在 ubuntu 上遇到了同样的问题,通过关闭终端并打开一个新终端解决了这个问题。

答案 27 :(得分:0)

首先要做

 npm rm -rdf node_modules

然后做

npm install

安装后,您要添加的任何文件

答案 28 :(得分:0)

我遇到了类似的问题,原因不同:yo node生成器已将"files": ["lib/"]添加到package.json,因为cli.js位于lib/之外}目录,它在发布到npm时被跳过。

https://github.com/yeoman/generator-node/issues/63的Yeoman问题应尽快解决。)

答案 29 :(得分:0)

我收到错误“错误:ENOENT,stat'C:\ Users \ userName \ AppData \ Roaming \ npm'。但是没有这样的目录。创建目录并且npm安装开始工作

答案 30 :(得分:0)

我最近在Windows 7 x64计算机上升级到节点4.2.1。运行时

npm install -g bower

我遇到了类似的错误:

  

npm ERR! enoent ENOENT:没有这样的文件或目录,打开'C:\ Users \ THE_USERNAME \ AppData \ Local \ Temp \ npm-THE_HASH'

认为它与AppData路径有关,我玩了

npm config edit

npm config edit --global

更改前缀,缓存和tmp字段,但在新路径中收到相同的错误:

  

npm ERR! enoent ENOENT:没有这样的文件或目录,打开'C:\ Users \ THE_USERNAME \ npm-temp \ npm-THE_HASH'

所有命令都以管理员身份运行,因此我拥有完全权限。

然后我认为现有文件存在一些问题,所以我跑了:

npm cache clean

但得到了同样的错误。但是,仍然存在一些临时文件。用cygwin手动删除所有临时数据最终解决了我的问题:

rm -rf bower bower.cmd node_modules etc

如果您只有Windows cmd,则可以使用类似

的内容
rmdir /S THE_TEMP_DIR

删除所有子目录(尽管如果你有深层嵌套的节点依赖项,这是众所周知的问题)

所以,也许有一些问题需要升级npm并且还有bower或其他软件包的版本。在我的情况下似乎是问题

答案 31 :(得分:0)

以上都不适合我。但yarn install有效,然后npm i开始工作。不确定什么纱线固定,但快速简便的解决方案!

答案 32 :(得分:0)

如果你试图&#34; make install&#34;在您的项目目录中出现此错误,您可以尝试:

rm -rf ./node_modules
npm cache clear
npm remove sails

然后您可以尝试安装&#34;

如果你有&#34; npm ERR! enoent ENOENT:没有这样的文件或目录,chmod&#39; ... / djam-backend / node_modules / js-beautify / js / bin / css-beautify.js&#39;&#34;然后你可以尝试安装一些以前版本的js-beautify,更多评论:https://github.com/beautify-web/js-beautify/issues/1247

"dependencies": {
  ...
  "js-beautify": "1.6.14"
  ...
}

并运行&#34; make install&#34;。如果您没有其他依赖项需要更高版本(1.7.0),在这种情况下,您必须在packages.json中降级此软件包,这似乎有用。

答案 33 :(得分:-1)

我遇到了类似的问题,清除缓存、删除 node_modules 和重新安装都不起作用,因此将节点版本升级到最新版本对我有用。

sudo npm install n -g

然后

sudo n stable

答案 34 :(得分:-2)

Creating a new React app in C:\Users\CM\Downloads\react\github-profile.
Installing packages. This might take a couple of minutes.
Installing react, react-dom, and react-scripts...

npm ERR! path C:\Users\CM\AppData\Roaming\npm-cache_cacache\content- 

v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996b1fa335b1
0893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015eec65545008a3cad93d00f806

npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall lstat
npm ERR! Error: EPERM: operation not permitted, lstat 
'C:\Users\CM\AppData\Roaming\npm-cache_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996
b1fa335b10893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015eec6
5545008a3cad93d00f806'
npm ERR! { [Error: EPERM: operation not permitted, lstat 
'C:\Users\CM\AppData\Roaming\npm-cache_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996b1f 
a335b10893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015eec6554500
8a3cad93d00f806']

npm ERR! cause:
npm ERR! { Error: EPERM: operation not permitted, lstat 
'C:\Users\CM\AppData\Roaming\npm-cache_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996b1
fa335b10893d67f7339e4 
af62bb688c0da2aaca839d4c9d51e2eb015eec65545008a3cad93d00f806'
npm ERR! errno: -4048,
npm ERR! code: 'EPERM',
npm ERR! syscall: 'lstat',
npm ERR! path:
npm ERR! 'C:\Users\CM\AppData\Roaming\npm-cache\_cacache\content- 


npm ERR! stack:
npm ERR! 'Error: EPERM: operation not permitted, lstat 
'C:\Users\CM\AppData\Roaming\npm-cache\_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996
b1fa335b10893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015
eec65545008a3cad93d00f806'',
npm ERR! errno: -4048,
npm ERR! code: 'EPERM',
npm ERR! syscall: 'lstat',
npm ERR! path:
npm ERR! 'C:\Users\CM\AppData\Roaming\npm-cache\_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996b1fa335
b10893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015eec65545008a3cad93
d00f806',
npm ERR! parent: 'postcss-image-set-function' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It's possible that the file was already in use (by a
text editor or antivirus),
npm ERR! or that you lack permissions to access it.
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double- 
check thenpm ERR! permissions of the file and its containing directories, or 
try  running

npm ERR! the command again as root/Administrator (though this is not 
recommended).
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\CM\AppData\Roaming\npm-cache_logs\2019-03-22T10_
27_19_722Z-debug.log


Aborting installation.
npm install --save --save-exact --loglevel error react react-dom react- 
scripts   has failed.

Deleting generated file... node_modules
Deleting generated file... package.json
Deleting GitHub-profile/ from C:\Users\CM\Downloads\reactDone.``

我遇到了类似的错误,但是我尝试运行过多次create-react-app命令,最后它被创建了,这是我的Internet连接问题。 检查您的互联网连接

答案 35 :(得分:-14)

请试试这个

SET HTTP_PROXY=<proxy_name>

然后尝试该命令。它将起作用