NPM:运行npm时未找到npm-cli.js

156

通常我可以使用npm安装库,但今天在安装yeoman时遇到了这些错误。请帮忙找出根本原因。

D:\Works\phonegap\ionic\todo>npm install -g yo
    module.js:340
    throw err;
          ^
Error: Cannot find module 'C:\Program Files\nodejs\node_modules\npm\bin\node_modules\npm\bin\npm-cli.js'

at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3

我查看了文件夹:

C:\Program Files\nodejs\node_modules\npm\bin\

但是并没有像错误描述的那样看到node_modules文件夹。

我也尝试找到npm-cli.js,发现它实际上在C:\Program Files\nodejs\node_modules\npm\bin\中。


你安装了Node.js吗? - Mritunjay
2
抱歉,我忘记重新安装 Node 以修复这个错误,所以现在没有 node_modules 文件夹了。但在那之前,我也检查了 C:\Program Files\nodejs\node_modules\npm\bin\node_mod ules\,但是在其中并没有看到 npm 文件夹。 - user1192476
我有答案。8个小时后发布。谢谢。 - user1192476
2
好吧,我猜有人可能需要这个提示:点击node.js安装程序,选择“修复”,这样错误就解决了。 - vainquit
40个回答

155

问题似乎是由于系统变量中节点的错误路径引起的。该路径当前指向

(我真的不知道我修改它的时间)

C:\Program Files\nodejs\node_modules\npm\bin

所以我改成

C:\Program Files\nodejs

并且它的效果非常好。


28
我遇到了同样的问题。路径从未更改,因此我猜想这可能是我升级 Node 时发生的。 - Nils Magne Lunde
我觉得问题出现在我安装了Electron之后 :( - Charles Walker
5
你改了这个在哪里?是哪个文件? - CodeToad
1
环境变量。 - Crozeta
1
如果您正在使用 VS Code,请不要忘记在更改路径后关闭每个实例 ;) - Raphaël Balet
显示剩余4条评论

65

我刚刚修复了我的NodeJS安装,现在它可以正常工作了!

请前往控制面板\所有控制面板项\程序和功能 --> 找到NodeJS并选择“修复”选项进行修复。希望这可以帮助你。


8
这对我有用,但在Windows 10上它被称为“应用与功能”。 - PeonProgrammer
谢谢您!在我的Windows电脑上,在“应用和功能”下修复Nodejs后,我的问题得到了解决! - missjcohen
3
这个回答应该排在更靠前的位置。谢谢! - mfisher91
这对我有用,但我找不到如何从“应用和功能”修复它。相反,我必须打开节点安装程序。开始时有一个修复按钮。 - Daniel Kaplan
1
这绝对对于两位遇到同样问题的同事起作用了。 - undefined
显示剩余4条评论

64

你需要在命令行中运行此命令。

SET PATH=C:\Program Files\Nodejs;%PATH%

在Windows中的Bash Shell - Prathap Kudupu
当我升级我的node版本时,我遇到了这个问题。你的解决方案完美地为我工作。我不需要删除任何node_modules文件夹。 - AllJs
1
很高兴它有帮助。 - Prathap Kudupu
我不得不将此路径向上移动,以在尝试使用npm(npm -i npm)更新npm后赋予它更高的优先级。 - Corey Alix
这对我有效 - osama

30

从已安装的Node.js路径中复制名为npm的目录(在我这里,npm目录位于C:\Program Files\nodejs\node_modules中)。

导航到C:\Users\%USERNAME%\AppData\Roaming\npm\node_modules,并将复制的npm目录粘贴到此处。

当我遇到相同错误时,使用此方法解决了问题...


4
谢谢,这个方法很有效,因为升级后我的 NPM 安装出了问题,即使尝试修复和重新安装也没能解决。 - Slbox
我们想在哪些文件中进行更改,请指导。 - Ibad Shaikh
之前也遇到过类似的情况。将nodejs文件夹复制到C:\Users\%USERNAME%\AppData\Roaming\目录下,并将其重命名为'npm'。然后问题就解决了。 - undefined

29

如果您的路径中包括 C:\Program Files\nodejsC:\Program Files\nodejs\node_modules\npm\bin,那么您可能也会遇到这个问题。请从路径中删除后者。


11
在哪条路径上? - CodeToad

20

这与问题不同,但对于面临类似问题的人可能会有帮助。在Windows上,如果您正在从某些CI /自动化工具调用 npm 命令,则可能会遇到以下错误:

Error: Cannot find module 'SOME_PATH\node_modules\npm\bin\npm-cli.js'

其中SOME_PATH不是Program Files/...,而是某个项目目录。因此,npm会尝试在项目根目录中查找npm-cli.js,而不是在Program Files/nodejs中搜索。

原因是npm.cmd脚本:

:: Created by npm, please don't edit manually.
@ECHO OFF

SETLOCAL

SET "NODE_EXE=%~dp0\node.exe"
IF NOT EXIST "%NODE_EXE%" (
  SET "NODE_EXE=node"
)


SET "NPM_CLI_JS=%~dp0\node_modules\npm\bin\npm-cli.js"
FOR /F "delims=" %%F IN ('CALL "%NODE_EXE%" "%NPM_CLI_JS%" prefix -g') DO (
  SET "NPM_PREFIX_NPM_CLI_JS=%%F\node_modules\npm\bin\npm-cli.js"
)
IF EXIST "%NPM_PREFIX_NPM_CLI_JS%" (
  SET "NPM_CLI_JS=%NPM_PREFIX_NPM_CLI_JS%"
)

"%NODE_EXE%" "%NPM_CLI_JS%" %*

这个脚本使用%~dp0来查找npm-cli.js,但是一些自动化工具可能会设置工作目录,导致%~dp0指向本地项目目录,从而使脚本工作不正确。
一个可能的解决方案是将npm调用更改为以下方式:
npm.cmd install

转换为这样

cmd.exe /c npm.cmd install

如果您需要将WorkingDirectory设置为在特定目录中运行安装命令,则这并不能解决问题。 - Daniel Fisher lennybacon
我成功的方法是在npm命令后面运行更改目录命令: "cmd.exe" /c cd /d "T:\TfsAgent_work\1\s\src\WebHost" && "C:\Program Files\nodejs\npm.cmd" install - Daniel Fisher lennybacon

15

我使用nvm安装node 8.5时遇到了同样的问题。以下解决方案对我有效。

$ nvm uninstall 8.5
8.5.0
Uninstalling node v8.5.0...Error removing node v8.5.0
Manually remove C:\Users\Omkar\AppData\Roaming\nvm\v8.5.0.

$ nvm install 8.5
8.5.0
Downloading node.js version 8.5.0 (64-bit)...
Complete
Creating C:\Users\Omkar\AppData\Roaming\nvm\temp

Downloading npm version 5.3.0... Complete
Installing npm v5.3.0...

Installation complete. If you want to use this version, type

nvm use 8.5.0

Omkar@VAST-0137 MINGW64 /d/code

这对我有效是因为在使用nvm之前,node 8.5并没有被正确地安装。我发现这是因为在node_modules目录下没有创建"npm\bin\npm-cli.js"文件夹和文件。


2
我的路径看起来没问题;卸载/重新安装解决了我的问题。 - Mark Maslar
我使用旧版Node时遇到了一些奇怪的问题,即使我切换到新版本也无济于事。所以我卸载了旧版Node并重新安装了新版。通过这种方式,我解决了cli的问题 :) 谢谢 - Andrej Gaspar
同样的问题,我的路径没问题,我使用 NVM 切换项目中的 Node 版本。nvm install 8.11 显示安装成功,但是却有一个问题:node_modules 目录为空,所以 npm 无法正常工作。执行 nvm uninstall 8.11 然后再次 nvm install 8.11 即可解决问题! - TooLiPHoNe.NeT

15

在我安装GoogleChrome/puppeteer后,出现了这个问题,解决方法是重新安装npm:

$ npm i npm@latest

或者

$ npm install npm@latest

避免这种情况。为了获得更好的支持,您的节点版本应与npm版本同步。即使运行时npm会说另外一种情况。同时升级两者或保持安装在一起的版本。除非您只是在测试/检查事物。同样适用于puppeteer(我的升级也涉及到puppeteer)。 - TamusJRoyce

9

其他答案对我都没有用。

以下是我在Windows上的Git Bash shell中编写的内容:

PATH="/c/Program Files/nodejs/:$PATH" npm run yeoman

7

在Mac上:

我使用Maven com.github.eirslett Frontend插件运行时出现了相同的错误。

最终,我不得不做以下操作:

通过此处的安装程序下载安装Node.js:http://nodejs.org/

从我的Maven构建结构中删除所有的node/node_modules/文件夹。


2
看起来这个问题已经在更新的前端插件版本中得到了修复:https://github.com/eirslett/frontend-maven-plugin/issues/147 - Noremac
对我来说,我只需要重新安装Node。谢谢! - ElDiabolo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接