Nvm-windows: 调用 NPM 时“找不到模块”

创建于 2015-05-18  ·  39评论  ·  资料来源: coreybutler/nvm-windows

一切似乎都安装正确,执行nvm list给出...

  0.12.3
* 0.10.38 (Currently using ?-bit executable)

但是,当我尝试运行npm ,会弹出错误...

module.js:340
    throw err;
          ^
Error: Cannot find module 'C:\Program Files\nodejs\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:935:3

没错,在 node_modules 目录中没有安装 npm 模块,用于安装的任一版本的节点。

Installer Issue

最有用的评论

不幸的是,我现在没有要测试的 Win 2012 服务器。

100% 手动执行此操作的方法:

  1. 节点发行版服务中为您要设置的版本确定合适的 npm 版本。
  2. 进入C:\Program Files\nodejs (或您设置符号链接的任何地方)。
  3. 创建一个名为node_modules 。 下载合适的npm 版本。 提取内容。 此时,您应该在node_modules目录中有一个名为npm的文件夹。
  4. 返回根目录( C:\Program Files\nodejs ... 与node_modulesnode.exenode64.exe相同的级别)。 创建npm和 npm.cmd` 文件。 代码在这个 gist 中可用。

所有39条评论

是否有针对此问题的手动解决方法? 需要能够获取 node_modulesnpm 目录和内容以显示在安装...

如果您看到(Currently using ?-bit executable) ,则有两种解决方案。 首先,您可以从源代码构建(master 分支对此进行了修复)。 另一种方法是分别安装每个版本的节点(即 32 位和 64 位)。 在@FredyC的示例中,您可以同时执行nvm install 0.10.38 32nvm install 0.10.38 64 。 或者,您可以找到节点可执行文件,将其复制并粘贴为 node32.exe 或 node64.exe。 是的,这是一个丑陋的黑客。

由于代码中缺少 case 语句,NVM 无法识别节点可执行文件的适当版本。 前面提到的 hack 本质上是重置状态,使其正常工作。 之后,npm 应该可以正常工作。 如果没有,请告诉我您运行的是哪个版本的 Windows,以及您在安装 NVM 之前是否安装了任何东西(即之前版本的 node、io.js 等)。

是的,我安装了之前版本的 Node (0.12.2),并在出现提示时告诉 NVM 管理它。 现在,当我安装新版本时,它不会安装 npm 模块二进制文件。 我现在如何让 npm 模块填充?

主机:Windows 2012 R2 64 位

当您执行nvm list时,您看到(Currently using ?-bit executable)还是看到(Currently using 64-bit executable) nvm list ? 这是一个关键的答案,因为代码可以阻止 npm 安装。

我看到了:(目前正在使用 ?-bit 可执行文件)

进入安装 NVM for Windows 的目录,找到0.12.2文件夹(或当前使用的任何版本),并注意是否只有一个.exe 。 如果它是node64.exenode32.exe ,请复制一份名为node.exe 。 您应该有 2 个.exe文件。

然后再次运行nvm list 。 它不应再显示问号。 如果是这种情况,请尝试使用 npm。 如果它仍然不起作用,您可以卸载并重新安装该版本,此时所有 npm 文件都应该可用。

将 node64.exe 复制到 node.exe

还是得到:
虚拟机列表

  • 0.12.2(当前使用 ?-bit 可执行文件)

npm 模块也仍然缺失。

啊,可能需要将node64.exe重命名node32.exe ......我忘记了那一步。

似乎没有工作...

d:appsnvm>nvm 安装 0.12.2
正在下载 node.js 版本 0.12.2(64 位)...完成
正在下载 npm 2.7.4 版...完成
安装 npm v2.7.4...

安装完成。 如果要使用此版本,请键入

nvm 使用 0.12.2

d:appsnvm>cd v0.12.2

d:appsnvmv0.12.2>ren node64.exe node32.exe

d:appsnvmv0.12.2>cp node32.exe node.exe

d:appsnvmv0.12.2>nvm 列表

  • 0.12.2(当前使用 ?-bit 可执行文件)

d:appsnvmv0.12.2>dir
07/16/2015 09:06 PM

.
07/16/2015 09:06 PM..
07/16/2015 09:06 PM 11,104,640 node.exe
07/16/2015 09:03 PM 11,104,640 node32.exe
07/16/2015 09:03 PM节点模块
07/16/2015 09:03 PM 340 npm
07/16/2015 09:03 PM 209 npm.cmd
4 个文件 22,209,829 字节
3 目录 72,946,851,840 字节空闲

您运行的是哪个版本的 Windows?

Windows 2012 R2 64 位

在我运行“nvm use 0.12.2”后,我看到它将 exe 重命名为 node.exe 和 node64.exe

不幸的是,我现在没有要测试的 Win 2012 服务器。

100% 手动执行此操作的方法:

  1. 节点发行版服务中为您要设置的版本确定合适的 npm 版本。
  2. 进入C:\Program Files\nodejs (或您设置符号链接的任何地方)。
  3. 创建一个名为node_modules 。 下载合适的npm 版本。 提取内容。 此时,您应该在node_modules目录中有一个名为npm的文件夹。
  4. 返回根目录( C:\Program Files\nodejs ... 与node_modulesnode.exenode64.exe相同的级别)。 创建npm和 npm.cmd` 文件。 代码在这个 gist 中可用。

这似乎是由 #75 引起的

尝试转到您的 nvm 文件夹,然后转到导致您出现问题的版本,然后双击 npm.cmd 文件。

我有同样的问题,我认为是因为 Windows 智能屏幕。 对我有用的修复方法是卸载 nvm,然后重新安装,将安装目录从默认 (Appdata) 更改为 c:nvm。 一切都很完美。 这让我认为这是一个许可的事情......

完全相同的症状,根本原因是 McAfee 干扰(预装在我的戴尔上)与安装。 禁用实时扫描并重新安装 nvm-windows。 然后一切正常。

注意:该项目的自述文件(https://github.com/coreybutler/nvm-windows#antivirus)中有关于 McAfee 干扰的说明,但引用的症状并不相同。

操作系统:Win 7 - 64 位
nvm 安装:C:/nvm,版本 - 1.1.0
节点安装:6.2.2


Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。 版权所有。

C:UsersRework>node -v
v6.2.2

C:UsersRework>npm -v
模块.js:442
抛出错误;
^

错误:找不到模块“C:Program Filesnodejsnode_modulesnpmbinnpm-cli.js”
在 Function.Module._resolveFilename (module.js:440:15)
在 Function.Module._load (module.js:388:25)
在 Module.runMain (module.js:575:10)
运行时 (node.js:348:7)
启动时 (node.js:140:9)
在 node.js:463:3
模块.js:442
抛出错误;
^

错误:找不到模块“C:Program Filesnodejsnode_modulesnpmbinnpm-cli.js”
在 Function.Module._resolveFilename (module.js:440:15)
在 Function.Module._load (module.js:388:25)
在 Module.runMain (module.js:575:10)
运行时 (node.js:348:7)
启动时 (node.js:140:9)
在 node.js:463:3

它现在可以工作了,我刚刚从 github 站点下载了 node 6.2.2 src 文件夹,并将 node_modules 文件夹复制到了 6.2.2 版本的 node 文件夹内的 nvm 文件夹中。
我想了解为什么 nvm 不会自动复制所有这些文件,而我们必须手动完成。

我实际上只是在我的 Windows 10 机器上安装了 6.2.2 ......完全没有问题。

@invinciblemuffi - NVM4W _does_ 这样做。 如果某些事情没有自动发生,则几乎总是操作系统阻止命令运行,或某些其他 3rd 方软件(如防病毒软件)。 此外,Windows 7 已达到 EOL 并且在技术上不受支持。

在与 npm 和 node 相关之前删除系统 env 路径,但保留 nvm,它对我有用

如果 NVM 可以检测到此故障,提供适当的错误消息并回滚安装,那就太好了

我刚刚遇到了同样的问题,并通过以管理员身份运行 NVM 来“解决”它。

@PlatinumEagle

2017 和 McAfee 仍然让我对安装感到悲伤! 感谢 PlatinumEagle 给我提示...

这在最新版本中不应该再发生了,所以我要关闭它。 如果人们继续遇到此问题,请在此处发布,我将重新打开。

对于那些处理防病毒软件的人:请记住确保您的 AV 定义是最新的。 NVM4W 已被 McAfee 和所有其他主要 AV 系统列入白名单。

同样重要的是要记住,此操作需要提升的管理权限。 这是操作系统的规定......这些只是 Windows 创建符号链接或访问C:\Program Files (被视为敏感目录)所需的权限。

它在 Mac 上运行良好,但在 linux 服务器上出错...

wdio wdio.deskcustomreporter.conf.js

模块.js:442
抛出错误;
^
错误:找不到模块“../build/lib/cli.js”
在 Function.Module._resolveFilename (module.js:440:15)
在 Function.Module._load (module.js:388:25)
在 Module.require (module.js:468:17)
在要求(内部/module.js:20:19)
在对象。(/srv/fronttest/fronttest/releases/4-fronttest-master-20170721000921/node_modules/.bin/wdio:5:1)
在 Module._compile (module.js:541:32)
在 Object.Module._extensions..js (module.js:550:10)
在 Module.load (module.js:458:32)
在 tryModuleLoad (module.js:417:12)
在 Function.Module._load (module.js:409:3)


“开发依赖”:{
"@housing/filter-encoder": "^1.0.31",
"同时": "^3.5.0",
"摩卡": "^3.2.0",
"webdriverio": "^4.5.2"
},
“依赖关系”:{
"child_process": "^1.0.2",
"es6-promise": "^4.0.5",
"快递": "^4.15.3",
"octokat": "^0.4.18",
“下划线”:“^1.8.3”
},
“版本”:“0.0.1”
}

@sanjaychaudhari1821 - 这是 _Windows_ 的 NVM。 我认为您正在寻找nvm

安装Node 6.11.3或6.12.0时依然出现这个问题,没有检查其他node6版本。 适用于节点 8.9.1 和 9.1.0。 以前能用,现在不行了……

我以管理员身份运行
nvm 安装 6.12.0

Downloading node.js version 6.12.0 (64-bit)...
Complete
Creating C:\Users\D068725\AppData\Roaming\nvm\temp

Downloading npm version 3.10.10... Complete
Installing npm v3.10.10...

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

nvm use 6.12.0

然后我运行 nvm use 6.12.0

Now using node v6.12.0 (64-bit)

然后我运行 npm --version

module.js:471
    throw err;
    ^

Error: Cannot find module 'C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js'
    at Function.Module._resolveFilename (module.js:469:15)
    at Function.Module._load (module.js:417:25)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:383:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:496:3
module.js:471
    throw err;
    ^

Error: Cannot find module 'C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js'
    at Function.Module._resolveFilename (module.js:469:15)
    at Function.Module._load (module.js:417:25)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:383:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:496:3

当我查看文件夹 6.12.0 中的 node_modules 文件夹时,它是空的。

顺便说一句,下载似乎有效,在临时文件夹中,我可以看到 npm-xxx.zip 已下载并解压缩。 然而它似乎没有被复制过来......

我刚遇到这个问题!

我使用 nvm uninstall 卸载了我的 nodeJS 安装(然后按照说明手动删除文件夹)

然后在管理员权限下运行 NVM 重新安装,这似乎通过以管理员身份删除并重新安装而起作用!

我在全新安装时遇到了这个问题。 我尝试了以下排列,结果相同,一个空的 node_modules 文件夹。

  1. 安装到默认目录,以用户身份运行终端,执行 nvm 命令。
  2. 安装到默认目录,以 root 身份运行终端,执行 nvm 命令。
  3. 安装到C:\Users\q4i2\nvmC:\Users\q4i2\node ,以用户身份运行终端,执行 nvm 命令。
  4. 安装到C:\Users\q4i2\nvmC:\Users\q4i2\node ,以 root 身份运行终端,执行 nvm 命令。

VMWare Fusion 10.0.1 中的 Windows 10 来宾
非虚拟机窗口 1.1.6
带有最新定义的 Mcafee 5.0.6.220。 不幸的是,这是一台工作机器,所以我无法禁用它进行测试。

C:\Users\q4i2
λ nvm install 4.8.7
Downloading node.js version 4.8.7 (64-bit)...
Complete
Creating C:\Users\q4i2\nvm\temp

Downloading npm version 2.15.11... Complete
Installing npm v2.15.11...

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

nvm use 4.8.7

C:\Users\q4i2
λ nvm use 4.8.7
Now using node v4.8.7 (64-bit)

C:\Users\q4i2
λ npm -v
module.js:327
    throw err;
    ^

Error: Cannot find module 'C:\Users\q4i2\node\node_modules\npm\bin\npm-cli.js'
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:140:18)
    at node.js:1043:3
module.js:327
    throw err;
    ^

Error: Cannot find module 'C:\Users\q4i2\node\node_modules\npm\bin\npm-cli.js'
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:140:18)
    at node.js:1043:3

C:\Users\q4i2
λ nvm root

Current Root: C:\Users\q4i2\nvm

C:\Users\q4i2
λ dir C:\Users\q4i2\nvm\v4.8.7\node_modules\
 Volume in drive C is OSDisk
 Volume Serial Number is 5AC4-C122

 Directory of C:\Users\q4i2\nvm\v4.8.7\node_modules

01/10/2018  11:40 AM    <DIR>          .
01/10/2018  11:40 AM    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  14,723,813,376 bytes free

违规行似乎是Installing npm v2.15.11...因为它不像之前的下载任务那样更改为Installing npm v2.15.11... Complete

更改数据库中的表时出现此错误.....

C:UsersGauravNode.js>node demo_alterTable.js
模块.js:540
抛出错误;
^

错误:找不到模块“C:UsersGauravNode.jsdemo_alterTable.js”
在 Function.Module._resolveFilename (module.js:538:15)
在 Function.Module._load (module.js:468:25)
在 Function.Module.runMain (module.js:684:10)
启动时 (bootstrap_node.js:187:16)
在 bootstrap_node.js:608:3

- - - - - - - - - - - - - - - - - - - - - - -源代码 - - ---------------------
////文件名- demo_alterTable.js
var mysql = require('mysql');

var con = mysql.createConnection({
主机:“本地主机”,
用户:“根”,
密码: ””,
数据库:“nodejs”
});

con.connect(功能(错误){
如果(错误)抛出错误;
console.log("已连接!");
var sql = "ALTER TABLE 客户 ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY";
con.query(sql,函数(错误,结果){
如果(错误)抛出错误;
console.log("表已更改");
});
});

@GauravSinghPawar该问题似乎与 npm 无关,因此您可能应该创建另一个问题。 这张票用于 npm,默认情况下应该安装但不是。 默认情况下,文件C:\Users\Gaurav\Node.js\demo_alterTable.js并未安装在每个用户的计算机上,因此我非常怀疑您是否遇到了相同的问题和/或根本原因。 看起来您遇到的问题是文件在那里,但由于某种原因无法读取。 npm 问题可以通过手动放置文件来“修补”。

当您创建新问题时,最好包含日志和版本信息。 至少,我希望看到 nvm、node.js 和 Windows 版本号以及C:\Users\Gaurav\Node.js\的目录列表及其文件的权限。 此外,您运行节点的用户身份以及它是否具有提升的权限。

在全局安装 Electron 后,我遇到了同样的问题。
解决方案:我手动创建了 npm 文件夹,然后通过修复操作重新安装。

简单的重启解决了这个问题

@coreybutler提供的手动修复对我

我想我遇到了同样的问题

我的环境

  • 视窗 10

我正在使用 NVM4W 版本:

  • 1.1.7

我试过使用 cmd 和内置的 win 命令行界面,有管理员权限和没有管理员权限,结果相同。

λ npm
internal/modules/cjs/loader.js:584
    throw err;
    ^

Error: Cannot find module 'C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:582:15)
    at Function.Module._load (internal/modules/cjs/loader.js:508:25)
    at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
internal/modules/cjs/loader.js:584
    throw err;
    ^

Error: Cannot find module 'C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:582:15)
    at Function.Module._load (internal/modules/cjs/loader.js:508:25)
    at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

更新 10/4

我确认我的node_modules在安装时也为空。 这有点奇怪,因为没有其他暗示。 安装 v9.11.2 的输出:

λ nvm install 9.11.2
Downloading node.js version 9.11.2 (64-bit)...
Complete
Creating C:\Users\MyUser\AppData\Roaming\nvm\temp

Downloading npm version 5.6.0... Complete
Installing npm v5.6.0...

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

nvm use 9.11.2

当我尝试运行npm时,输出与更新前相同。

所以我使用官方安装程序在 nvm 之外安装了v9.11.2的副本。 将npm文件从该安装的 npm_modules 复制到我的 nvm 安装,卸载了独立版本,瞧,当我运行npm时,我的 nvm 安装不再抱怨了。

我一直在使用管理员权限运行所有命令和安装,所以这不应该是这里的问题,但我不是普通的 Windows 用户,所以我可能错过了一些东西或出错了,谁知道...

我得到了这个,但对我来说,这与HERE是相同的问题。 通过在从提升的命令提示符运行 nvm install 之前禁用 McAfee 来修复它。

我怀疑我的问题与@helzgate相同,但由于公司原因我无法对其进行测试。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

Pomax picture Pomax  ·  3评论

thany picture thany  ·  4评论

snerte picture snerte  ·  5评论

janpio picture janpio  ·  3评论

webspecialist picture webspecialist  ·  5评论