[ ] 我的 Windows 安装是非英语的。
[x] 阅读自述文件以了解 npm 陷阱和防病毒问题。
[x] 确保这不是关于如何在 Windows 上使用 NVM 的问题,因为gitter用于问题和评论。
[] 设置.txt
使用安装程序安装 nvm-windows 后,使用>nvm install latest
或>npm install 4.4.7
安装 node 版本。 我希望能够在命令行中键入>npm help
以验证 npm 是否正常工作(然后当然可以使用它来安装软件包)。
虽然 nvm 说安装了 npm,但包含 node_modules 的文件夹是空白的:
...\AppData\Roaming\nvm\v4.4.7\node_modules
(空)
C:\Program Files\nodejs\node_modules
(空)
首先,我从这里安装了 nvm 1.1.1: https :
我使用nvm install 4.4.7
安装了节点版本 4.4.7。 所有 nvm 命令都可以正常工作,包括nvm use
,我可以在 node.js 中运行 hello world 脚本。
在安装过程中,我得到以下命令行输出:
>nvm install 4.4.7
Downloading node.js version 4.4.7 (64-bit)... Complete
Creating C:\Users\myusernamewithoutspaces\AppData\Roaming\nvm\temp
Downloading npm version 2.15.8... Complete
Installing npm v2.15.8...
Installation complete. If you want to use this version, type
nvm use 4.4.7
当我然后在命令行中键入npm help
,我收到此错误:
module.js:327
throw err;
^
Error: Cannot find module 'C:\Program Files\nodejs\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:139:18)
at node.js:968:3
module.js:327
throw err;
^
Error: Cannot find module 'C:\Program Files\nodejs\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:139:18)
at node.js:968:3
谢谢你的帮助!
更新
在查看原始帖子时,我注意到了这个块:
>nvm install 4.4.7
Downloading node.js version 4.4.7 (64-bit)... Complete
Creating C:\Users\myusernamewithoutspaces\AppData\Roaming\nvm\temp
Downloading npm version 2.15.8... Complete
Installing npm v2.15.8...
Installation complete. If you want to use this version, type
nvm use 4.4.7
请注意, nvm use 4.4.7
是 NVM4W 在新节点安装完成后输出的 _instructions_ 的一部分。 如果您_不实际运行_ nvm use x.x.x
,则无法识别节点,因此无法识别 npm。 在尝试运行任何 npm 命令之前,请确保运行nvm use x.x.x
(其中 xxx 是您要运行的版本)!
原始回复
你在代理后面吗? 这个问题以前曾出现在一些用户身上……主要是那些使用代理的用户。
在使用特定版本时,我会检查以确保C:\Program Files\nodejs\node_modules\npm\bin
存在。
尝试卸载/重新安装您想要的版本可能是值得的。 归根结底,一旦下载/提取文件,NVM4W 只需将控制权交给 node/npm。 挑战是,有时下载可能会显示误报(即未完成 npm 下载,但表示已完成)。 我怀疑这可能是你正在发生的事情。
谢谢@coreybutler。 我不在代理后面,但有一个基本的防火墙。 我尝试在防火墙关闭的情况下全新安装 NVM4W 和nvm install 4.4.7
。 结果是相同的 - \AppData node_modules 是完全空的,而 \nodejsnode_modules 文件夹是空的。
还有其他想法吗? 如果它正在移交控制权,我还将检查有关安装 npm 的问题的节点安装文档
我认为您不需要在防火墙关闭的情况下安装 NVM4W(因为它正在响应)......但您可能想在防火墙关闭的情况下测试运行nvm install x.x.x
。 我仍然怀疑 npm 下载可能没有 100% 完成。
是的,我确实在关闭防火墙的情况下进行了安装,但没有帮助。 我不确定如何测试下载或其他方面可能出现的其他问题。 如果您有任何其他想法,请告诉我!
我在使用 nvm 1.1.1 和 windows 10 时遇到了同样的问题。是否有任何信息需要帮助调试。 这个对我来说真的很奇怪。 它会工作一段时间,然后最终停止工作并且无法再找到 npm。
@NealHumphrey,如果您卸载正在使用的版本,然后在您的 nvm 根目录中删除该版本的安装文件夹,然后重新安装,这通常对我有效几周,然后它将再次停止工作,并出现您报告的相同错误。
@LeeGDavis - 我一直无法让它工作,甚至重新安装 Node 版本或重新安装 NVM4W 然后再安装 Node。
用于调试 - 当您能够使用它时,这两个文件夹的内容是什么?
...\AppData\Roaming\nvm\v4.4.7\node_modules
C:\Program Files\nodejs\node_modules
然后下次它停止为您工作时,您可以再次检查内容是什么吗?
@LeeGDavis - 如果它在一段时间后停止工作,那么您的环境中肯定有问题。 NVM4W 永远不会触及任何东西,除非您运行nvm
命令。 某处,某处正在被修改。 这将有助于更多地了解环境。 例如,您是否在 Active Directory 域中? 你有什么定时任务吗? 您是否安装了防病毒软件,如果安装了,是哪一个?
@NealHumphrey - 只是澄清一下,您正在运行nvm install
来在防火墙关闭的情况下安装节点,而不是在防火墙关闭的情况下运行整个 nvm 安装(GUI)? 如果要检查下载,可以比较版本的校验和(可在 nodejs.org 上找到)。
有同样的问题。 关闭我的迈克菲防火墙,这次安装似乎成功了: \node_modules\nvm
文件夹在那里。
通过切换到我新安装的 Node (6.2.2) 版本并执行npm --version
命令来测试安装,它返回 3.9.5
更新:由于原因不得不卸载。 当我重新安装(防火墙仍然关闭)时,问题再次出现: \node_modules\nvm\
文件夹丢失。 我尝试在管理员模式下使用 GIT BASH 终端和命令提示符来安装 Node,但结果总是相同。
更新 2:关闭防火墙和病毒扫描程序,它再次工作,在管理员模式下使用命令提示符。
@NealHumphrey和@coreybutler一周内问题再次发生,所以我切换到 vanilla node,但将在本周末切换回 nvm 以帮助调试。
我不在任何域控制/活动目录设置中,也没有计划任务。 关于安装,nvm 从不报告失败,但是一旦可执行文件从路径中被破坏或发生任何事情,需要删除 nvm 根目录中的安装文件夹才能使其再次工作......
有这个完全相同的问题。 卸载 MVN,关闭 Mcafee 实时保护和防火墙,重新安装它,错误消失了。
肯定是杀毒问题。 然而; 听起来它可能是可以在设置中修改的东西。 我今天早上确认 NVM4W 已被 Mcafee 列入白名单。
我使用的 windows 框是 vanilla windows 10 pro 安装。 除了我想的默认 Windows 防御者和防火墙之外,没有安装其他第三方防病毒或防火墙。 对我来说奇怪的是,特定版本(通过 nvm4w 安装的节点)在它似乎停止工作之前会工作一段时间,而恢复它的唯一方法似乎是我上面描述的。
@LeeGDavis Windows Defender 也可以删除文件。 然而; NVM4W 也被列入白名单。 我建议下次发生这种情况时查看您的%PATH%
。 我开始怀疑在你的情况下,也许 AV 正在修改路径。 换句话说,一切都可能是正确的,但 Windows 找不到它。 如果这种情况一直发生,请打开一个新问题以便我们对其进行跟踪。
至于没有安装npm,我仍然认为它只是防火墙/防病毒软件阻止了从节点分发站点下载npm。 如果@frankorama的解决方案有效,就是这种情况,并且在 NVM4W 中没有什么可以防止这种情况发生。 我可以尝试在某个时候向安装程序中的防火墙添加例外,但这并不意味着它们不会被 3rd 方软件覆盖。
@coreybutler @LeeGDavis Windows Defender 是我的罪魁祸首
我有这个问题。 (Windows 7x64,nvm v1.1.1)
经过一番挖掘,我发现似乎问题出在os.Rename(tempDir+"\\nvm-npm\\npm-"+npmv,env.root+"\\v"+version+"\\node_modules\\npm")
,因为之前的所有步骤都正确完成。
我可以建议,当执行此命令时,由于先前的重命名命令,dir 仍然很忙。
也许将命令重新排序为类似的东西
os.Rename(tempDir+"\\nvm-npm\\npm-"+npmv,env.root+"\\v"+version+"\\node_modules\\npm")
os.Rename(env.root+"\\v"+version+"\\node_modules\\npm\\bin\\npm",env.root+"\\v"+version+"\\npm")
os.Rename(env.root+"\\v"+version+"\\node_modules\\npm\\bin\\npm.cmd",env.root+"\\v"+version+"\\npm.cmd")
或捕获错误并重试(睡眠 1 秒后)
UPD
我输入了重命名ang得到的最后结果
“重命名......访问被拒绝。”
@se-m 感谢您的洞察力。 顺序很重要,但似乎存在同步问题......至少在您的环境中。 您使用哪个版本的 Go 运行测试?
如果文件移动确实是问题所在,我不喜欢使用枕木,因为它并不能真正解决问题。 os.Rename
_should_ 只是移动文件,但看起来可能不可靠。
@coreybutler我使用 go1.7 进行测试(只需打印错误)
我没有看到“首先从文件夹中移动文件,然后再移动文件夹”和“首先移动文件夹,然后将文件移出”之间的区别(示例中的路径已更正)。
如果您不使用卧铺或重新排序,我只能建议使用“复制”命令而不是“移动”。
给大家。
检查您是否有“同步问题”(在 nvm install xxx 之后):
@se-m 是的,计划是使用副本。 这样,校验和可以与下载匹配,然后在复制完成后再次匹配。 日志记录可以应用于这两个步骤,检查文件完整性和权限。
而不是使用睡眠者或额外的副本,我只是捕获已知的异常并重试,这样您就不会遇到竞争条件,并且您可以在放弃应对缓慢的“旋转锈”磁盘或有人安装到网络同步漫游配置文件的情况。
我知道这有点旧,但可以确认在安装时禁用 McAfee 是有效的。
另外我必须禁用 360 TS 才能使其正常工作,谢谢
有同样的问题。 为我修复了什么:从我的 PATH 变量中删除“C:\Users\{your_username}\AppData\Roaming\npm”。 我认为这是以前节点安装的剩余部分。
我有同样的问题@office ,我们有 mcAfee Enterprise,但它在我的家用电脑上运行良好。
我以这种方式解决(这是更快的一种),我下载 NPM 包并将内容复制到 node_modules/npm 文件夹。 它工作正常。
@yuxblank我和你在同一条船上 - 办公室的 McAfee Enterprise。 禁用它不是一种选择。 您的解决方案帮助了我。
@yuxblank @manolkalinov
我已经尝试了建议的方法,虽然它确实让 npm 工作,但全局安装仍然对我不起作用 - 与 npm 的行为相同,除了我手动复制的内容之外,node_modules 只是空的。
你们也是这样吗?
我全新安装了 Windows 10 Pro,之前没有安装 npm 或节点,目前我通过nvm install latest
安装了节点,但没有npm
安装 8.9.1 时出现相同问题的 Windows 10 专业版。 得到了节点,但 nvm\v8.9.1node_modules 和 c:\program files\nodejsnode_modules 一样是空的。 工作计算机具有无法禁用的 McAffee。 我将下载 npm 并手动安装。
+1
在安装新节点版本(9.5.0)之前
在它安装 nvm 并尝试切换到 6.10.0 版本后,它切换但如果
我运行npm start
然后我看到:
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:394:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:509: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:394:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:509:3
如果我切换回已安装的 9.5.0 节点版本(未使用 nvm 安装),则npm start
有效
Windows 10 全新安装,没有杀毒软件,没有 npm ...... :(
同样在这里,关闭 Mcafee 实时保护和防火墙,重新安装它,现在npm
可用。
关闭 McAfee 防火墙和实时保护进行了全新安装并收到错误:EISDIR 对目录的非法操作,请阅读。
类型错误:无法读取 errorHandler 处未定义的属性“get”(C:\Program Files\nodejsnode_modulesnpm\lib\utilserror-handler.js:205:18)
使用 Windows 10
节点版本 8.9.4
Avira 防病毒软件在我的电脑上引起了这个问题。 Win10,任意节点和npm
我从 Windows 10 到 7 重新安装操作系统并使用 NVM 没有任何问题😁
我遇到了同样的问题,我完全偶然地发现了一种可能的解决方法(但由于我不想再次卸载新版本的节点,因此未得到验证)。 所以这里发生了什么:
所以根据这些观察,我的猜测是,也许在安装过程中,temp 文件夹的删除速度比从 temp 到目标节点文件夹的 move 命令删除得更快,留下 move 命令而没有要移动的文件。
我遇到了这个问题,但能够通过简单地重新运行 nvm use 命令来解决它。
最新版本的 nvm 为我解决了问题。
经过多次尝试,只有禁用 McAfee 的“访问保护”,nvm 终于可以正确安装 npm 了!
真正令人不安的是,McAfee 没有显示任何日志:“没有任何威胁”,大人...是的,只是阻止了一些文件的创建,我会说这是一个事件!
对我来说不幸的是,以上都没有奏效。 McAfee 已禁用,Defender 已关闭,但我仍然遇到问题。 正如 AlainD 所指出的,我看到它在临时下载和暂存......但如果我尝试按照他的建议去做,我最终会进入一个空文件夹。 没有任何内容被复制到 node_modules 并且我所在的文件夹是空的 - 文件夹的踪迹一直到我所在的位置。
所以是的,问题肯定是从 temp 到 node_modules 的移动/复制有问题。
是的,我试过以管理员 cmd 和常规身份运行。 我还没有把 git bash 放在这个盒子上。
通过从我从 nodejs.org 手动下载的 zip 存档中复制 npm 文件夹(在 nodemodules 下)来解决。 不完美,但解决了迈克菲问题。
我也遇到了同样的问题,但是在切换到节点 10.7.0 和 npm 6.1.0 后,我的 npm install 相当不完整 - 它首先缺少 uuid 包,然后是 C:\ProgramDatanvm\v10.7.0node_modulesnpm 中的 semver 包。 我没有 McAfee,但我有 COMODO 防病毒软件。
我的解决方案与 YafimK 的几乎相同 - 但我只是从 nvm\temp 文件夹中复制了 npm-v6.1.0.zip,然后手动将其解压到 C:\ProgramDatanvm\v10.7.0node_modulesnpm。 从其内容来看,您可以简单地从https://github.com/npm/cli/releases下载相同的文件夹,而无需干预临时文件夹。
希望这可以帮助某人。 我也希望 nvmw 解决这个问题。
这似乎是一个间歇性问题。
nvm uninstall 9.4
rm -r ~\AppData\Roaming\nvm\v9.4.0
nvm install 9.4
nvm use 9.4
Start-Sleep -Seconds 1
npm --version
如果我以管理员身份从 PowerShell 重复运行此脚本,有时它会成功安装 npm,有时它会失败并显示错误Error: Cannot find module 'C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js'
。
所以基本上,我可以通过卸载和重新安装来让它工作,直到它随机工作。
npm 将他们的 repo 从 npm/npm 更改为 npm/cli。 它会影响 Node 10.8.0+ 的任何安装。 这已在 1.1.7 中修复。
@coreybutler至少可以说这有点令人生气:/
感谢您修复。
刚刚安装了 nvm 1.1.7,但在 Windows 10 Enterprise 1709 上仍然存在此问题。
在安装 nvm 和使用 nvm install 之前禁用 McAfee Endpoint Security 防火墙没有帮助。
这里的情况与 ralfhandl 相同。
@robertmain - 确实如此。 npm 已经改变了好几次,而没有被窥视。
@ralfhandl & @mmascolino - 只是确保...你在npm help
之前运行nvm use x.x.x
npm help
,对吗? 我查看了原始问题并意识到 OP 实际上并没有提到运行它(尽管注释显示了 nvm 的输出以及运行nvm use
)。
我关闭这个问题的原因如下:
nvm use x.x.x
(请参阅我对上面原始消息的更新回复)如果您仍然遇到这样的问题,请打开一个新问题。
在尝试使用 npm 之前, nvm 确实使用了 8.11.4
节点 8.xx 受 npm 的硬编码权限限制(参见 #300)。 使用 Win 10 Enterprise( @mmascolino或 @ralfhandl)的人可以尝试使用较新或较旧版本的 Node 吗? 我看不出为什么 NVM4W 在那种风格的 Windows 中会有不同的行为,但 Node 8.xx 中已知的 npm 问题可能是罪魁祸首。
我已经安装了 Node 版本 10.9.0、8.11.4、6.14.4 和 6.9.0。
在所有情况下nvm install x.y.z
似乎都可以正常工作,并且在nvm use x.y.z
Node 本身工作正常,但是缺少 npm,我不得不单独下载 npm 并将其解压缩到C:\Users\xxx\AppData\Roaming\nvm\vx.y.z\node_modules
。
干得好:
C:\Users\mascolino.mm>nvm install 10.9.0
Downloading node.js version 10.9.0 (64-bit)...
Complete
Creating C:\Users\mascolino.mm\AppData\Roaming\nvm\temp
Downloading npm version 6.2.0... Complete
Installing npm v6.2.0...
Installation complete. If you want to use this version, type
nvm use 10.9.0
C:\Users\mascolino.mm>nvm use 10.9.0
Now using node v10.9.0 (64-bit)
C:\Users\mascolino.mm>npm
internal/modules/cjs/loader.js:583
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:581:15)
at Function.Module._load (internal/modules/cjs/loader.js:507:25)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
at startup (internal/bootstrap/node.js:266:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:596:3)
internal/modules/cjs/loader.js:583
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:581:15)
at Function.Module._load (internal/modules/cjs/loader.js:507:25)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
at startup (internal/bootstrap/node.js:266:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:596:3)
node_modules 文件夹 ( C:\Users\mascolino.mm\AppData\Roaming\nvm\v10.9.0\node_modules
) 是完全空的。
与这里的@mmascolino相同
与这里的@mmascolino相同,我唯一的区别是节点版本的目标文件夹是 c:\ProgramDatanvm\v10.11.0。
node_modules 文件夹是完全空的。
相同的
我也有同样的问题。
确保您已删除之前安装的 Node(如自述文件中所述)。 这是这些错误的最常见原因,因为 npm 在版本之间变得混乱。 请注意错误状态Cannot find module
,这是一个 npm 错误。 这表明检测到 npm _is_ .... 但不是正确的版本。
还要检查您的临时目录,在@mmascolino的情况下,它会是C:\Users\mascolino.mm\AppData\Roaming\nvm\temp
以查看是否有文件。 如果什么都没有,下载可能由于某种原因失败……这可能是防火墙设置、网络故障或权限问题。
@coreybutler IMO,自述文件需要改进。 如果这是一个必需的步骤,它应该是它自己的段落并加粗。
这是当前的副本:
它带有一个安装程序(和卸载程序),因为获取它应该很容易。 请注意,在安装 NVM for Windows 之前,您需要卸载任何现有版本的 node.js。 还要删除可能保留的任何现有 nodejs 安装目录(例如,“C:\Program Files\nodejs”)。 NVM 生成的符号链接不会覆盖现有(甚至是空的)安装目录。
这并没有强调卸载现有版本的重要性,也没有为用户提供一种简单的方法来做到这一点。 如果这是nvm-windows
工作的要求,我们应该在运行时显示警告(例如C;\Program Files\nodejs exists, this may cause problems with installation
)。 更好的是提供一个命令来清理现有的安装。
@cdtinney - 安装程序中有关于此的说明。 我不能把它加粗(在安装程序中),但有一个屏幕。 随时更新自述文件并提交 PR。 我会接受的。
你好,
我遇到了与此处报告的在 Windows 10 上使用 nvm 1.1.7 的问题类似的问题,该问题已在最新的 master 主管中解决。
本质上,nvm 正在下载 nodejs,npm zip 已正确下载和解压缩。 复制到 nodes_module 目录失败,但没有错误。
我拉取了最新的主版本并在本地构建,安装工作正常。
我在调试时注意到的一个问题是在线https://github.com/coreybutler/nvm-windows/blob/0a258f810d13eb20c56f6bebe575cd7451348d03/src/nvm.go#L298
如果重试后移动失败,则不会记录错误或安装不会失败。
你能从最新版本的master发布一个新版本吗?
感谢您的工作和亲切的问候,
弗格斯
我刚刚有这个问题。 我已经尝试了除禁用 McAfee 之外的所有解决方案,但我不允许这样做,唯一对我有用的解决方案是下载节点的 Windows 二进制 zip 文件,解压缩它,然后移动位于其 node_module 中的 npm 文件夹并将其放入由位于 C:\Program Files\nodejsnode_modules 的 nvm-windows 创建的
我的环境是 Windows 10 64bit 1803,使用最新的 nvm windows 1.1.7。
有些人需要编辑 npm.cmd 并添加 PATH。 (在 nvm 目录下的某处,可能是 nvm\vX.Y.Znpm.cmd)
在第 6 行,指定了节点可执行文件。
在我的环境中,它如下所示。
SET "NODE_EXE=%~dp0\node.exe"
这会尝试在同一目录中使用 node.exe。
但实际上有node64.exe,而不是node.exe。
所以我将 node.exe 重写为 node64.exe。
之后,您需要将 npm.cmd 所在的目录添加到 PATH 中。
关闭所有cmd。
自从打开新的 cmd 以来,这工作正常。
如果您使用和切换多个 nodejs 版本,我不知道这也能正常工作。
可以确认 McAfee 破坏 npm。 我们已经排除了一个特定的文件夹,只需将 nvm 和 npm 路径安装到该文件夹中。
我也有这个问题。
我通过以管理员身份运行 nvm-setup.exe 解决了这个问题
将安装目录更改为 C:\NVM 🎉
我正在锁定这个对话,因为新问题应该作为......新问题提交。
最有用的评论
有同样的问题。 为我修复了什么:从我的 PATH 变量中删除“C:\Users\{your_username}\AppData\Roaming\npm”。 我认为这是以前节点安装的剩余部分。