Nvm-windows: nvm 安装节点但无法交付 npm

创建于 2019-07-03  ·  47评论  ·  资料来源: coreybutler/nvm-windows

我的环境

  • [x] 视窗 10

我正在使用 NVM4W 版本:

  • [x] 1.1.7

我已经...

  • [x] 阅读自述文件以了解 npm 陷阱和防病毒问题。
  • [x] 查看了wiki以确保我的问题尚未解决。
  • [x] 已验证我正在使用具有管理权限的帐户。
  • [x] 搜索了问题(打开和关闭)以确保这不是重复的。
  • [x] 确保这不是关于如何在 Windows 上使用 NVM 的问题,因为gitter用于问题和评论。

我的问题与(仅检查适用的问题)有关:

  • [ ] 设置.txt
  • [ ] 代理支持(您尝试过 1.1.0+ 版本吗?)
  • [ ] 32 或 64 位支持(您尝试过 1.1.3+ 版本吗?)
  • [ ] 字符转义(你试过1.1.6+版本吗?)
  • [x] 标准 shell 环境(终端/powershell)
  • [ ] 非标准的 shell 环境(Cmder、Hyper、Cygwin、git)

预期行为

运行nvm install latest后,节点版本12.5.0和 npm 版本v6.9.0已安装。

实际行为

安装命令后,没有显示错误:

2019-07-03_09h10_55

出现以下问题:

2019-07-03_09h11_08

node_modules/ 文件夹为空:

2019-07-03_09h32_34

重现问题的步骤:

只需安装一个版本并检查会发生什么。 不知道这是如何工作的,但它似乎与新的 npm/cli 项目 url 更改有关。

最有用的评论

有同样的问题。 这是我的尝试,对我有用:

  1. https://nodejs.org/en/download/releases/以 zip 格式(或其他格式)下载需要的节点版本
  2. 如果node_modules目录已存在于 nvm 安装目录中的version drectory中,则删除它(例如 C:UsersUSER_NAMEAppDataRoamingnvmv8.11.4)。
  3. 从步骤 1 中解压缩文件,并将node_modules目录复制到上一步中推断的version directory
  4. npm 工作

所有47条评论

您是否 100% 确定您正在运行 1.1.7? 我问是因为 npm/cli 更改是 1.1.6 中存在的硬编码 URL 问题,并在 1.1.7 中修复。

不幸的是,100% 确定@coreybutler
哈哈哈

这是我的版本截图:

2019-07-03_13h33_44

我的一个朋友刚刚在他的机器上安装了 nvm 1.1.7,我也升级了我的以获得最新版本的 npm,不幸的是没有运气

对不起,不得不问:-)

我无法重新创建这个。

image

通常归结为 a) 权限,b) 下载期间的网络问题。 有时网络问题出在远程服务器上,尤其是在推送了全新的 node/npm 版本时。 此错误消息一直出现,但出于许多不同的原因,很难确定问题的真正根源。

要重现此问题,我必须卸载 Node 和 NPM 并仅使用 NVM 进行全新安装,然后出现错误。

pwrshell-nvm-install-latest

我注意到在安装过程中,与 NPM 相关的东西被下载到一个临时文件夹,但后来它从未移动到任何地方,并且临时文件夹被删除。
即使以管理员身份运行 powershell,所以我认为它与权限无关。

安装期间:
during-install

安装后:
after-install

@gsicoli您是正确的,npm 下载到临时目录然后被移动。 如果移动操作静默失败,则会导致目录被删除,而不会将 npm 移动到需要的位置(即这种行为)。

运行nvm usenvm install时是否会提示您? 以管理员身份运行并不一定意味着该帐户具有提升的权限。 通常,Windows 会提示您提升权限。 对于管理员帐户,它会自动授予,但仍需要用户说“确定”。

当我不以管理员身份运行时它会提示。 如果我以管理员身份运行它不会提示...尽管如此效果是一样的。

在 Windows 10 上面临同样的问题。如果我可以提供任何信息,我将很乐意提供帮助!

不过,它似乎与某个版本的节点无关; 对于我尝试安装的版本,node_modules 文件夹始终为空。 系统提示我提升权限。

有同样的问题。 有解决方法吗?

有同样的问题。 这是我的尝试,对我有用:

  1. https://nodejs.org/en/download/releases/以 zip 格式(或其他格式)下载需要的节点版本
  2. 如果node_modules目录已存在于 nvm 安装目录中的version drectory中,则删除它(例如 C:UsersUSER_NAMEAppDataRoamingnvmv8.11.4)。
  3. 从步骤 1 中解压缩文件,并将node_modules目录复制到上一步中推断的version directory
  4. npm 工作

有同样的问题。 所以,我已经应用了@liuwenzhuang 的解决方法。 确实,现在npm工作正常。 但是,我在npm up -g上收到以下错误
62166164-56513a00-b320-11e9-8728-4d0cfeb758a9

关闭 McAfee 并从管理控制台运行安装为我解决了这个问题。

@helzgate :这对我来说毫无意义。 我的病毒日志一无所获。
您能否提供 McAfee 活动的日志?

我可以确认这一点。 启用 mcafee 后,npm 被解压,但移动失败且没有任何错误。 McAfee 日志根本没有显示任何内容。 在安装期间禁用 mcafee 可解决此问题。
@coreybutler我知道这不是一个很好的解决方案,但显然解压缩是有效的,所以是否可以直接解压缩到 nodes_module/npm 文件夹而不是解压缩到 temp 并移动?

我遇到了同样的问题,但它似乎只发生在安装节点 6 时(或者因为我在执行nvm install latest之后安装了节点 6 而发生?)。 NPM 安装无限期挂起,我遇到了与上面列出的相同的npm-cli错误。

我安装了 McAfee Endpoint Security,但由于它是办公室中的托管 PC,因此无法禁用它以查看是否存在问题。 进入安装过程 10 分钟后,NPM 继续挂起。 有没有办法修改 NVM 以至少检测挂起或进程未按预期完成?

请注意,此评论完全有效! 如果这是nvm安装程序所做的,那就太好了。

@matthew-dean 与 McAfee 相同。 虽然他们没有正确定义我的权限,所以我可以禁用它。 明天我回来工作时,我会看看这是否是问题的原因。 我不会感到惊讶; dart 的包安装程序在安装某些包时报告了类似的问题(也可以通过下载到 temp 然后移动到其他地方)。

是的,这确实是我的问题! McAfee Endpoint Security 会静默阻止某些操作。

安装任何启用 McAfee 的版本 => 没有 npm
安装任何禁用 McAfee 的版本 => npm 都包括在内并且工作正常

执行npm update -g上面提到的错误是否也与 McAfee 有关? 或者这是解决方法的副作用?

不要这么想。 无论我是否禁用 McAfee,它对我没有任何改变。 另请注意,关于该主题已经存在两个问题(一个较长的一个一个较短的带有一个脚本,它似乎允许您仍然更新 npm(我没有测试它,但它有 30 多个竖起大拇指)

谢谢! 遵循该脚本的改进版本bash 。 (您可能需要调整nodejs位置。)将其附加到~/.bashrc并在新的 bash 中执行npmup 。 或者,直接一次执行函数体的命令。 此版本实际上进行了更新,而不是每次都(重新)安装。

function npmup {
  pushd /c/Program\ Files/nodejs > /dev/null
  mv npm npm2
  mv npm.cmd npm2.cmd
  mv npx npx2
  mv npx.cmd npx2.cmd
  node node_modules/npm/bin/npm-cli.js up npm -g
  mv -n npm2 npm
  mv -n npm2.cmd npm.cmd
  mv -n npx2 npx
  mv -n npx2.cmd npx.cmd
  rm -f npm2 npm2.cmd npx2 npx2.cmd
  popd > /dev/null
}

我提到的评论已被删除,很抱歉造成混淆。

使用 1.1.7 时,在使用 NVM 执行 Node.js + NPM 的全新安装时,我遇到了相同的问题,即 NPM 没有从“temp”文件夹中复制过来。 由于我使用的是公司机器,因此无法在禁用 McAfee Endpoint Security 的情况下进行测试。

但是,我今天从“master”构建了 NVM,并验证它能够从头开始正确安装而不会出现问题。

请注意,此问题_just_不是 NPM 无法安装,而是 NVM 命令行实用程序也无法_recognize_ NPM 未安装。 IMO 安装程序没有执行验证目录是否存在的必要步骤,这将避免围绕此问题的一些混淆。

@hind3nbug对我来说同样如此,McAfee Endpoint Security 在公司机器上是不可禁用的,所以仍然需要一种正确的方法来安装 NPM。 应该有一些方法可以做到这一点。

使用 1.1.7 时,在使用 NVM 执行 Node.js + NPM 的全新安装时,我遇到了相同的问题,即 NPM 没有从“temp”文件夹中复制过来。 由于我使用的是公司机器,因此无法在禁用 McAfee Endpoint Security 的情况下进行测试。

但是,我今天从“master”构建了 NVM,并验证它能够从头开始正确安装而不会出现问题。

可以分享一下你的版本吗? 我无法从源代码构建 nvm :(

@hind3nbug & @coreybutler ......那么这个问题解决了吗? 但没有发布新的 nvm 版本? 估计什么时候出新版本?

我在 nvm-windows 之前安装了 Nodist。 它在主目录( %userprofile% )下留下了一个.npmrc文件。 我不得不删除它并再次尝试nvm use命令以使一切正常。

今天发生在我身上 - 卸载版本然后重新安装它似乎可以解决问题。

我在安装 npm 时遇到了静默失败。

我认为它可能是 Windows 病毒扫描程序,所以我禁用了它:
image

奇怪的是,现在失败并没有沉默:

$ nvm install 12.12.0
Downloading node.js version 12.12.0 (64-bit)...
Complete
Creating C:\ProgramData\nvm\temp

Downloading npm version 6.11.3... Download failed. Rolling Back.
Rollback failed. remove C:\ProgramData\nvm\temp\npm-v6.11.3.zip: The process cannot access the file because it is being used by another process.
Could not download npm for node v12.12.0.
Please visit https://github.com/npm/npm/releases/tag/v6.11.3 to download npm.
It should be extracted to C:\ProgramData\nvm\v12.12.0

安装后你运行nvm on了吗?

每次安装新版本的 Node.js 时都必须这样做吗?

我已经使用 nvm 几年了,以前从来没有做过nvm on

我决定关闭这个问题,因为这开始涉及许多其他问题。 让我们坚持每个线程一个问题。 如果您的问题未解决,请打开一个新问题。

我将尝试根据我所阅读的内容进行总结:

1) npm 将由 nvm 安装。 如果您看到旧路径 (npm/npm),则需要将 NVM4W 升级到 1.1.7。 如果您没有适当的权限,它将失败。 这就是 Windows 的本质和意图,也是 UAC 提示存在的原因。
2) 您的防病毒软件可能会阻止 NVM4W 将 npm 的文件从临时目录移动到其最终位置。 将其关闭或例外。 见第 3 点。
3) NVM4W 已提交给各大杀毒软件供应商并且正在通过(理论上)。 然而; 防病毒软件一直在更改定义,因此很难跟上。 一些非品牌 AV 的定义基于非常过时的知识,最具挑战性的是一些完全阻止 Go 程序。 几年前,Go 运行时出现了误报……很久以前就已经打了补丁,而且 NVM4W 从未遭受过漏洞利用……但是一些 AV 公司阻止了整个 Go 语言签名。
4)说实话,我从不关闭和打开nvm。 您实际上不必这样做,但它旨在帮助测试您的系统。

有同样的问题。 这是我的尝试,对我有用:

  1. https://nodejs.org/en/download/releases/以 zip 格式(或其他格式)下载需要的节点版本
  2. 如果node_modules目录已存在于 nvm 安装目录中的version drectory中,则删除它(例如 C:UsersUSER_NAMEAppDataRoamingnvmv8.11.4)。
  3. 从步骤 1 中解压缩文件,并将node_modules目录复制到上一步中推断的version directory
  4. npm 工作

我尝试了两天... nvm,重新安装节点,重新启动,更改路径,这是唯一真正像魅力一样工作的东西!

@coreybutler我可以建议将@liuwenzhuang建议添加到 readme.md 或Common-Issues吗?

这可以节省某人的时间。

你好,这是我的情况,控制台中的这条消息给了我关于错误的线索:

请访问https://github.com/npm/npm/releases/tag/v6.14.4下载 npm。

转到https://github.com/npm/npm/页面显示存储库已被移动,现在位于https://github.com/npm/cli。 也就是说,您必须在所述存储库中查找 v6.14.4。

我在 Windows 10 上也遇到过同样的问题。可以通过禁用 McAffe 保护来解决。

打开 McAffe Endpoint Security > 威胁预防 > 禁用访问保护和访问扫描模块(取消选中)
运行 > nvm 安装版本

@coreybutler :我认为如果 npm 未正确安装,您应该提供一些相关通知。

有同样的问题。 这是我的尝试,对我有用:

  1. https://nodejs.org/en/download/releases/以 zip 格式(或其他格式)下载需要的节点版本
  2. 如果node_modules目录已存在于 nvm 安装目录中的version drectory中,则删除它(例如 C:UsersUSER_NAMEAppDataRoamingnvmv8.11.4)。
  3. 从步骤 1 中解压缩文件,并将node_modules目录复制到上一步中推断的version directory
  4. npm 工作

谢谢@liuwenzhuang今天你的评论真的很有帮助。 几天来我一直在与这个错误作斗争

为什么人们从网站下载节点以与 nvm 一起使用,这不正是 nvm 的用途吗? 😉 你也可以根本不使用 nvm。

我有一个幻象符号链接 nvm 之前创建的,由于 shell 权限,它无法删除。 我猜这是因为我在 git bash shell 中使用 nvm 作为非提升用户。

我在管理员命令提示符下删除了它:

del /f c:\Program Files\nodejs

然后为我使用 nvm 下载的版本创建了新的符号链接:

mklink /j "C:\Program Files\nodejs" "C:\Users\USER_NAME\AppData\Roaming\nvm\NODE_VERSION"

我还没有尝试过nvm use NODE_VERSION但是如果您在调用它之前删除符号链接,那么很有可能会为您创建链接(我猜这是预期的行为)。 很可能需要使用这样的东西: https ://github.com/imachug/win-sudo

有同样的问题。 这是我的尝试,对我有用:

  1. https://nodejs.org/en/download/releases/以 zip 格式(或其他格式)下载需要的节点版本
  2. 如果node_modules目录已存在于 nvm 安装目录中的version drectory中,则删除它(例如 C:UsersUSER_NAMEAppDataRoamingnvmv8.11.4)。
  3. 从步骤 1 中解压缩文件,并将node_modules目录复制到上一步中推断的version directory
  4. npm 工作

这有效!

McAfee + Win 10 + PowerShell 也有同样的问题。 - 非常感谢@liuwenzhuang

不知道为什么关闭,但我遇到了同样的问题,全新安装 Windows 10,全新安装 nvm,没有防病毒软件(内置除外)。 官方修复不是绕过我使用 nvm 的原因,是吗?

此评论对我有用: https ://github.com/coreybutler/nvm-windows/issues/475#issuecomment -538475058

只是在做nvm on ...我以为它在安装后直接“开启”😄

当你本地的 npm 版本是最新的时候,你安装最新的 node 时,它​​可能不会安装相同版本的 npm,会不会出现这种情况?

我的一台办公机器有 McAfee,我认为它正在停止安装(复制)npm 文件夹。 但是下面的步骤对我来说就像是一种拯救。 谢谢。

有同样的问题。 这是我的尝试,对我有用:

  1. https://nodejs.org/en/download/releases/以 zip 格式(或其他格式)下载需要的节点版本
  2. 如果node_modules目录已存在于 nvm 安装目录中的version directory中,则删除它(例如 C:UsersUSER_NAMEAppDataRoamingnvmv8.11.4)。
  3. 从步骤 1 中解压缩文件,并将node_modules目录复制到上一步中推断的version directory
  4. npm 工作

这对我有用,就像一个魅力!

我认为,通过nvm-windows添加一个测试步骤以确认任何nodejs版本的成功安装将非常有助于节省时间。 如果失败,则提供一些可能的见解来解决它。

@coreybutler认为?

谢谢。

@Amitesh - 我认为进行完整性检查是个好主意。 然而; 我现在没有时间这样做(参见讨论标签,第一篇文章)。 如果有人想添加这个,我会接受 PR。

对于使用 nvm(1.1.7)的新安装节点(10.23.0),我仍然面临在 Windows 10 上无法识别 npm 的问题
我按照以下步骤但没有用

https://nodejs.org/en/download/releases/以 zip 格式(或其他格式)下载需要的节点版本
如果 node_modules 目录已存在于 nvm 安装目录中的版本目录中,则删除它(例如 C:UsersUSER_NAMEAppDataRoamingnvmv8.11.4)。
从步骤 1 中解压缩文件,并将 node_modules 目录复制到上一步中推断的版本目录。
npm 工作
有人可以指导我如何让这个工作:( @coreybutler有什么帮助吗?
nvmerror
nvm npm _10 23 0

刚刚找到一个解决方法,查看与防病毒保护相关的评论。

我使用的是 Windows 10 64 位版本 1909(内部版本 18363.1139)

  1. 从开始菜单打开Windows 安全应用程序。
  2. 单击病毒和威胁防护磁贴。
  3. 在显示的界面中,选择“病毒和威胁防护设置”下的管理设置
  4. 关闭实时保护
  5. 从开始菜单中,找到命令提示符,右键单击并“以管理员身份运行”
  6. 使用您要安装的版本运行nvm install 。 npm 现在将正确安装。 使用版本验证nvm 使用,然后使用node -vnpm -v
  7. 返回 Windows 安全应用并重新打开实时保护
此页面是否有帮助?
0 / 5 - 0 等级

相关问题

hsali picture hsali  ·  4评论

leiamac picture leiamac  ·  4评论

AllainPL picture AllainPL  ·  7评论

webspecialist picture webspecialist  ·  5评论

ctsstc picture ctsstc  ·  3评论