164

我正在尝试全局安装我刚刚发布的 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 时。这应该不是问题,mylib/cli.js具有正常权限,并且 npm 在此安装期间具有超级用户权限。

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

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

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

4

39 回答 39

161

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

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

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

于 2013-08-02T15:03:16.033 回答
122

我遇到了类似的问题,

npm cache clean

解决了。

于 2014-05-03T15:06:07.733 回答
14

当我尝试运行时,在 Mac 上不知何故出现了这个问题npm install -g bower。由于无法找到像优雅 fs 这样的东西,这给了我一些错误。我不确定我最初是如何安装 npm 的,但看起来它可能是使用自制软件的 node 造成的。我第一次跑

brew uninstall node

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

brew install node

当它完成时,我已经nodenpm我的路上,我能够跑

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

然后成功安装了凉亭。

更新 brew 公式和升级安装似乎对我不起作用,我不知道为什么。删除.npm文件夹对其他人有用,我尝试过但没有成功。我这次是为了以防万一。另请注意,以下任何一项都没有为我解决问题,尽管它为其他人解决了问题:

npm cache clean
sudo npm cache clean
于 2014-01-09T23:52:44.447 回答
10

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

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

我尝试转到提到的文件夹,但它不存在。当我在Roaming文件夹中创建 npm文件夹时,该错误已修复。

这是在 Windows 8.1 上

于 2014-11-15T23:08:50.060 回答
10

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

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
于 2018-07-12T12:50:16.913 回答
5

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

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

"files": [
  "lib",
  "bin" // this was missing
]
于 2015-06-11T00:26:41.627 回答
4

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

于 2017-03-02T21:05:58.390 回答
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
于 2015-12-31T00:40:45.823 回答
3

I got this error while trying to install a grunt plugin. i found i had an outdated version of npm and the error went away after updating npm to the latest version

npm install -g npm
于 2015-04-04T16:13:39.480 回答
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

于 2015-02-19T06:26:53.990 回答
3

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

于 2021-04-13T06:00:06.647 回答
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中,我在全球范围内 npm 安装了一些生成器yeoman,如下所示:

$ sudo npm install -g generator-laravel

问题性质

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

解决方案

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

  2. 询问npm, bower, grunt, ...社区他们是否解决了我上面描述的这个问题。

于 2014-05-28T22:10:22.397 回答
2

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

于 2013-08-01T23:34:59.047 回答
2

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

sudo npm cache clear --force

然后删除node_modules&package-lock.json

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

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

npm install && npm start
于 2021-07-17T02:38:47.270 回答
1

在 Windows 中,我遇到了类似的错误。搜索粘贴 App Data 并搜索字符串npm

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

于 2014-10-27T17:20:17.260 回答
1

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

在 package.json 中:

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

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

于 2014-11-03T12:40:32.320 回答
1

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

于 2014-05-24T16:49:22.817 回答
1
  1. 安装最新版本的节点
  2. 运行:npm 缓存清理
  3. 运行: npm install cordova -g
于 2017-01-10T03:29:34.480 回答
1

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

于 2021-03-03T11:50:16.217 回答
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”中。

于 2018-10-16T13:16:51.250 回答
1

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

于 2020-03-16T21:28:15.657 回答
1

这是因为没有 package.json 而只有 package-lock.json

试试: npm init --yes

于 2021-07-03T18:14:18.140 回答
1

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

于 2018-05-26T04:04:50.090 回答
1

几乎所有东西都试过了,最后是这样的:

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

于 2020-05-03T15:08:02.713 回答
0

我有一个类似的问题,但原因不同:yo node生成器已添加"files": ["lib/"]到 my中package.json,并且因为 mycli.jslib/目录之外,所以在发布到 npm 时它被跳过了。

https://github.com/yeoman/generator-node/issues/63上的 Yeoman 问题,应该很快就会修复。)

于 2014-11-06T16:51:59.800 回答
0

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

于 2015-01-29T02:39:50.670 回答
0

先做

 npm rm -rdf node_modules

然后做

npm install

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

于 2019-08-27T08:47:28.487 回答
0

安装 ionic 时出现以下错误

115648 错误 enoent 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在该路径没有调用文件夹。我在那里创建它并正确安装。

于 2017-01-06T17:50:30.280 回答
0

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

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

于 2021-07-08T10:09:01.293 回答
0

解决问题仅仅是因为对文件的修改被锁定,或者您通过特定的保护程序锁定了分区上的权限,证明是在另一个文件或硬盘上的另一个位置创建项目

于 2022-02-12T21:34:09.440 回答
0

删除 node_modules、package-lock.json 并运行 npm install

rm -rf node_modules
rm -rf package-lock.json
npm install
于 2022-02-16T09:05:37.917 回答
0

我最近在 Windows 7 x64 机器上升级到节点 4.2.1。跑步时

npm install -g bower

我遇到了类似的错误:

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

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

npm config edit

npm config edit --global

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

npm 错误!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 或其他软件包的版本可能存在一些问题。就我而言,这似乎是问题所在

于 2015-10-30T16:45:16.567 回答
0

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

于 2017-10-19T21:36:16.810 回答
0

如果您尝试在项目目录中“进行安装”并出现此错误,您可以尝试:

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 中降级此包,这似乎有效。

或者

于 2017-09-18T10:29:47.267 回答
0

首先安装猫鼬依赖

npm 安装猫鼬

npm 安装

于 2021-11-10T10:00:43.873 回答
0

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

于 2021-03-11T22:49:50.550 回答
0

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

sudo npm install n -g

然后

sudo n stable
于 2021-05-12T17:31:15.217 回答
-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 命令,最后它被创建了,这是我的互联网连接的问题。检查您的互联网连接

于 2019-03-22T10:50:21.687 回答
-16

请试试这个

SET HTTP_PROXY=<proxy_name>

然后尝试该命令。它会工作

于 2014-01-02T12:48:21.210 回答