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


128

我正在尝试全局安装刚发布的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 links(--no-bin-links)的选项,当我尝试使用它进行安装时,它运行良好。

那怎么办?这是一些尚未解决的怪异的案例错误吗?

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


您的软件包使用node-gyp吗?我认为no-bin-links呼叫是相关的。
jcollum

不,模块中没有本机代码。是供参考的模块源。
giodamelio

1
--no-bin-links刚刚从符号链接中的package.json的文件停止NPM bin哈希全球安装的路径。
giodamelio

恩,我以前肯定碰到过这个问题,但是我不记得为什么……如果它突然出现,我会告诉你的。
jcollum

@jcollum非常感谢,我已经检查了十亿次,但是我仍然不禁感到自己错过了一些愚蠢的简单事情。那或者也许是一些奇怪的错误。
giodamelio

Answers:


133

好的,看起来NPM会将您.gitignore用作.npmignore文件的基础,因此可以忽略/lib。如果将空白.npmignore文件添加到应用程序的根目录中,那么一切都会正常进行。

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


真是的 这似乎有点令人困惑。现在不在电脑上,但是我会在几个小时内尝试一下。
giodamelio

3
3个小时的挫败感降到了我的.gitignore中的一行,这简直是npm install -g的失败。疯。
布莱恩

2
Windows的'type NUL> .npmignore'–
Kabir

1
从npm @ 5开始,npm缓存会因损坏问题而自我修复,并且保证从缓存中提取的数据是有效的。如果要确保所有内容都一致,请改用“ npm cache verify”。
阿披耶特(Abhijeet)

1
删除package-lock.json文件
FennRussel '19

107

我遇到了类似的问题,

npm cache clean

解决了。


11
我尝试了npm cache verify,它奏效了。感谢您的提示。
Jaikrat

从npm @ 5开始,npm缓存会因损坏问题而自我修复,并且保证从缓存中提取的数据是有效的。如果要确保所有内容都一致,请改用“ npm cache verify”。另一方面,如果您要调试安装程序中的问题,则可以使用npm install --cache /tmp/empty-cache临时缓存来代替实际的缓存。
Daniel Za

9

在Mac上尝试运行时,在Mac上出现了这个问题npm install -g bower。由于找不到像graceful-fs这样的东西,这给了我很多错误。我不确定我最初是如何安装npm的,但是看起来它可能是由于使用自制软件的节点导致的。我先跑了

brew uninstall node

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

brew install node

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

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

然后成功安装了凉亭。

更新brew公式和升级安装似乎对我不起作用,我不确定为什么。.npm文件夹的删除对其他人来说是有用的,而我尝试过却没有成功。我这次是为了以防万一。还请注意,以下各项对我来说都没有解决问题,尽管对其他人也解决了:

npm cache clean
sudo npm cache clean

9

我在npm安装时遇到此错误,添加.npmignore不能解决它。

错误:ENOENT,状态为“ C:\ Users \ My-UserName \ AppData \ Roaming \ npm”

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

这是在Windows 8.1上


4

我遇到了同样的问题,只是发现这里没有提到的处理方法。尽管我会为社区做出贡献:

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

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

遇到了同样的问题,这个答案对我来说是唯一的好办法。原因是我有一些条目,例如和,但是没有该文件夹,所以得到了files钥匙。因此,如果根本没有密钥,或者如果有一个密钥并将文件夹放入其中,那么它将起作用。package.jsonindex.jsLICENSEbinfilesfilesbin
雷米Becheras

谢谢,这帮助我摆脱了困境。一旦您指出bin目录未包含在文件中,我就认为“哦!当然!”。然后,我回到文档中查看是否错过了它,并且没有提及它(至少在我正在阅读的npm博客文章中没有提及)。至少我不疯:P。谢谢您的帮助!
克里斯·施米兹

4

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

4

我具体有一个类似的问题:错误!enoent ENOENT:没有这样的文件或目录,chmod'node_modules / npm / node_modules / request / node_modules / http-signature / node_modules / sshpk / bin / sshpk-conv我尝试了所有上述解决方案,但是没有运气。我正在使用无用信息框,而该项目位于共享文件夹中。当我将项目移动到另一个非共享文件夹(主机)时,问题似乎就在那里!问题解决了。以防万一另一个人也在使用流浪汉


Tnx,你把我从一场噩梦中唤醒了!我有2个附加功能:1.)停止使用npm,使用Yarn。2.)从主机而不是VM运行npm。
Flip Vernooij

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


3

升级到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

2

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


不,我发布它时,lib文件夹在那里。此外,当我尝试从本地文件夹安装时,出现相同的错误。即使lib文件夹在那里。
giodamelio

1
@giodamelio我同意ryan对此。错误是说不takeapeek/lib/cmd.js存在。即使lib文件夹在发布时可能是“ there”,但通过npm安装时它就不会是“ there”,除非它是存储库的一部分,或者除非您使用prepublish来创建它。
badsyntax

2

就我而言(多个代码ENOENT errno 34)是~/.npm/目录访问问题。在其中有一些具有root:root权限的子目录,当我以普通用户身份运行命令时会导致问题(没有sudo)。因此,我将~/.npm/目录中所有子目录和文件的所有权更改为本地用户和组。那在我的Ubuntu上就成功了(在Mac上也可以)。

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

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

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

编辑:

测试用例

从我的本地帐户中,/home/johnb我npm在全局安装了一些生成器yeoman,例如:

$ sudo npm install -g generator-laravel

问题性质

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

解决方案

  1. 连续检查是否~/.npm/包含具有本地用户帐户以外的所有权(和/或权限)的子目录,尤其是当您使用sodo(根)安装或更新某些东西时。如果是这样,则~/.npm/递归将内部所有权更改为本地用户。

  2. 询问npm, bower, grunt, ...社区,他们如上所述解决了这个问题。


2

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

npm install -g npm

1

我尝试了在网上(npm cache clearrm -rf ~/.npm)上找到的所有内容,但似乎没有任何效果。解决该问题的方法是将节点(和npm)更新为最新版本。试试看


1

在Windows中,我有一个类似的错误。搜索粘贴应用程序数据并搜索字符串npm

我更换了串'npm'用(包括引号),'npm.cmd'在这两个atlasboard\lib\package-dependency-manager.jsatlasboard\lib\cli\commands.js。这解决了问题。


1

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

在package.json中:

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

但是./bin/module并不存在,因为它的名字叫modulejs



1

如果您的node.js也以某种方式损坏,则会出现此错误。我通过完全卸载/重新启动/安装node.js修复了此错误,并修复了此错误以及引发的其他三个神秘错误。


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"
}

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

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

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




0

我收到错误消息“错误:ENOENT,统计信息'C:\ Users \ userName \ AppData \ Roaming \ npm'。但是没有这样的目录。创建了目录,npm安装开始工作


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或其他软件包的版本时,可能会遇到一些问题。就我而言,这似乎是个问题


0

当安装离子我得到下面的错误

115648错误源ENOENT:没有此类文件或目录,请重命名'C:\ Users \ UserName \ AppData \ Roaming \ npm \ node_modules.staging \ ansi-b11f0c4b'->'C:\ Users \ UserName \ AppData \ Roaming \ npm \ node_modules \ ionic \ node_modules \ cordova-lib \ node_modules \ ansi'

ansi在该路径下没有文件夹被调用。我在那里创建并正确安装。


0

如果您尝试使用此错误在项目目录中进行“安装”,则可以尝试以下操作:

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

那么您可以尝试“进行安装”

如果您具有“ npm ERR!enoent ENOENT:无此类文件或目录,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中将此包降级。

要么


0

以上都不对我有用。但是yarn install工作了,然后npm i开始工作。不知道固定的是什么纱线,而是快速简便的解决方案!


0

先做

 npm rm -rdf node_modules

然后做

npm install

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


0

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


-3
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连接的问题。检查您的互联网连接


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.