Nvm-windows: nvm安装失败,显示“文件名或扩展名太长”

创建于 2017-07-21  ·  25评论  ·  资料来源: coreybutler/nvm-windows

我的环境

Windows 8

我正在使用NVM4W版本:

1.1.5

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

  • [] settings.txt
  • []代理支持(您尝试过版本1.1.0+吗?)
  • [] 32或64位支持(您是否尝试过1.1.3+版本?)
  • []字符转义(您是否尝试过1.1.6及更高版本?)
  • [x]标准外壳环境(终端/ powershell)
  • []非标准的shell环境(Cmder,Hyper,Cygwin,git)

预期行为

安装节点版本8.2.1

实际行为

因错误The filename or extension is too long失败

重现此问题的步骤:

λ nvm install 8.2.1
Downloading node.js version 8.2.1 (64-bit)...
Complete
Downloading npm version 5.3.0... Complete
Installing npm v5.3.0...2017/07/21 09:02:31 mkdir C:\Users\suhas.karanth.RB\AppData\Roaming\nvm\temp\nvm-npm\npm-5.3.0\node_modules\libnpx\node_modules\yargs\node_modules\read-pkg-up\node_modules\read-pkg\node_modules\load-json-file\node_modules\parse-json\node_modules\error-ex\node_modules\is-arrayish: The filename or extension is too long.

尽管这是一个问题,但我怀疑是否有直接解决此问题的方法。 但是,创建此问题来分享我如何解决它以及如何避免它。

我安装了nvm( v1.1.6 )的最新预发行版本,但这一次将其安装到C:\nvm\以节省路径长度。 之后能够成功安装节点v8.2.1 。 您认为默认情况下将nvm安装到此路径是​​否有意义?

upstream-bug

最有用的评论

如果安装最新版本(1.1.6),而不是C:/Users/<username>/AppData/Roaming/nvm请选择C:/nvm作为安装文件夹,它应该可以工作。 安装8.4.0没问题:)

对我来说,使用nvm root更改nvm的路径不起作用,我收到了奇怪的错误消息。 它没有复制nvm <commands> ,然后甚至node停止工作。

按照@michaelkdh的建议手动克隆npm也不起作用,并且与全新安装相比,似乎

所有25条评论

此安装有问题...您是否同时安装了两个版本的NVM?

此时可能为时已晚,但是echo %NVM_SYMLINK%输出什么?

否。发生错误时,我没有安装2个版本的NVM。

此时可能为时已晚,但是echo %NVM_SYMLINK%输出什么?

实际上,还不算太晚。 我有一个开放的终端,仍然有较旧的环境。

λ where nvm
C:\Users\suhas.karanth.RB\AppData\Roaming\nvm\nvm.exe

λ echo %NVM_SYMLINK%
C:\Program Files\nodejs

另外,我之前通过NVM安装并正在使用多个版本的节点:

λ nvm list

  * 8.1.2 (Currently using 64-bit executable)
    8.1.1
    8.1.0
    8.0.0
    6.10.3
    6.10.0
    5.12.0
    4.8.0
    4.2.6

我有同样的问题。
Windows 10
锅壳
NVM 1.1.5

这是在节点8.2.08.2.1
8.1.48.1.3工作正常。

$ nvm install 8.2.0
Downloading node.js version 8.2.0 (64-bit)...
Complete
Downloading npm version 5.3.0... Complete
Installing npm v5.3.0...2017/07/22 00:15:41 mkdir C:\Users\Christopher\AppData\Roaming\nvm\temp\nvm-npm\npm-5.3.0\node_modules\libnpx\node_modules\yargs\node_modules\read-pkg-up\node_modules\read-pkg\node_modules\load-json-file\node_modules\parse-json\node_modules\error-ex\node_modules\is-arrayish: The filename or extension is too long.

我想知道我们是否应该在上游使用npm。
@clowenhg如果将nvm直接安装到C:\nvm ,此问题将得到解决,但是不再能识别现有的节点安装。 我已将多个节点文件夹移至C:\nvm并能够看到它们列出的列表,但从未有机会对其进行测试。 多亏了Windows更新和启动循环。

那可能会起作用,但似乎只是暂时的解决方法,直到下一件事想再深入一个目录为止。 所以,是的,将其作为NPM的一个问题可能是一个不错的选择。

看到8尚未达到LTS的最终版本,我现在仅恢复到8.1.4。

新版本的npm确实存在许多问题,特别是那些包含npx支持的问题。 我在master分支中添加了对npx的支持,并将在1.1.6正式发布(当前正在测试)时将其发布。 然而; 即使在该分支中,npx仍然会失败(通过没有NVM4W的独立Windows Node安装程序也会失败)。

我相信这是一个npm问题,而不是NVM4W问题。 我正在关闭问题并将其标记为上游问题。

@coreybutler如果您不介意的话,请v8.1 ,npx仍然可用并且可用,尽管在Windows上有问题。 但是nvm不必为此做任何事情。

节点8.1没有附带npx支持。 如果您在8.1中安装了它,则必须一直在npm install -g npm某个位置运行以升级npm。 npx v5.3.0中添加了npx命令,npm 5.3.0附带的第一个Node版本是8.2.1。 有关详细信息,请参见#288。

是的。你可能是对的。 我确实记得升级npm。

我有同样的问题,我要解决的办法是:

  1. 安装8.2.1,它将使您无法正常运行。
  2. 安装v6.11.2并将2个文件(npm和npm.cmd)从/ c:/ [用户名] /AppData/Roaming/nvm/v6.11.2复制到文件夹v8.2.1
  3. 在文件夹v8.2.1中,执行git clone https://github.com/npm/npm.git

那你应该很好

谢谢@michaelkdh对我
稍有不同的是,当我克隆'npm.git'时,它创建了'npm'文件夹。 而且我不得不将“ npm”文件夹移动到“ node_modules”。

@ gblue1223同样,只需要npm就位。 干杯,

@coreybutler根据您链接的问题,您可以覆盖要安装的路径。

如果安装最新版本(1.1.6),而不是C:/Users/<username>/AppData/Roaming/nvm请选择C:/nvm作为安装文件夹,它应该可以工作。 安装8.4.0没问题:)

对我来说,使用nvm root更改nvm的路径不起作用,我收到了奇怪的错误消息。 它没有复制nvm <commands> ,然后甚至node停止工作。

按照@michaelkdh的建议手动克隆npm也不起作用,并且与全新安装相比,似乎

@ peterbakonyi05重新定义nvm文件夹也只是为了安装它仍然有点不足。

@Sieabah我同意,整个问题很奇怪。 但是我认为它仍然比其他2个提议的解决方案更好(实际上它们都不对我有用)

对于仍然遇到此问题的用户,有人可以提供重新创建此错误的步骤吗? 还是截屏? 我还没有真正看到这个动作。

另外,我注意到很多人正在从他们的终端复制/粘贴...以及/c/whatever ,lambdas等语法不断出现..所有这些都表明人们正在使用Cygwin之类的东西,git shell,cmder等。请注意,这些shell并不总是遵守Windows平台标准_,它们_do_会影响路径的读取方式。 还有其他一些问题,因此请在发布之前尝试在标准终端中进行所有操作,以确保这是NVM4W问题,而不是终端外壳问题。

@coreybutler在这里,您可以使用cmd.exe

C:\ Users \ Christopher> nvm安装8.4.0
正在下载node.js版本8.4.0(64位)...
完成
创建C:\ Users \ Christopher \ AppDataRoamingnvm \ temp

正在下载npm版本5.3.0 ...完成
安装npm v5.3.0 ... 2017/09/05 16:50:14 mkdir C:\ Users \ Christopher \ AppDataRoamingnvm \ tempnvm-npmnpm-5.3.0node_modules \ libnpxnode_modules \ yargsnode_modules \ read-pkg-upnode_modules \ read-pkgnode_modules \ load-json-filenode_modules \ parse-jsonnode_modules \ error-exnode_modules \ is-arrayish:文件名或扩展名太长。

C:\ Users \ Christopher>其中nvm
C:\ Users \ Christopher \ AppDataRoamingnvmnvm.exe

C:\ Users \ Christopher> nvm安装8.4.0
正在下载node.js版本8.4.0(64位)...
完成
创建C:\ Users \ Christopher \ AppDataRoamingnvm \ temp

正在下载npm版本5.3.0 ...完成
安装npm v5.3.0 ... 2017/09/05 16:50:14 mkdir C:\ Users \ Christopher \ AppDataRoamingnvm \ tempnvm-npmnpm-5.3.0node_modules \ libnpxnode_modules \ yargsnode_modules \ read-pkg-upnode_modules \ read-pkgnode_modules \ load-json-filenode_modules \ parse-jsonnode_modules \ error-exnode_modules \ is-arrayish:文件名或扩展名太长。

C:\ Users \ Christopher>哪里节点
C:\ Program Filesnodejsjsnode.exe

C:\ Users \ Christopher>其中npm
C:\ Program Files节点
C:\ Program档案nodejsnpm.cmd

如果这有所作为,我也使用nvm版本1.1.5(也许您使用的是1.1.6?)

我可以确认升级到1.1.6可以解决此问题。 之所以有意义,是因为看起来某些文件路径管理现在使用本机Go库。

这也意味着文件路径错误位于nvm中,而不是npm本身。 在npm上提交的所有错误都可能需要再次检查。

感谢@ computerquip-streamlabs。 我遇到了这个问题,并通过升级nvm来解决,

scoop install [email protected]

然后,我可以使用nvm安装节点8.7.0。

使用“ npm安装:文件名或扩展名太长”来安装nvm 1.1.6修复错误

来自: C:\ Users \ [用户名] \ AppDataRoamingnvm

  1. 更改文件settings.txt
root: C:\nvm 
path: C:\Program Files\nodejs 
arch: 64 
proxy: none
  1. 将两个文件elevate.cmdelevate.vbs复制到:

然后对我有用!

由于几个用户仍在运行,因此重新打开。

FWIW,我正在运行Windows 10,我确实启用了长文件路径,但是仍然无法安装高于6.x的节点版本...由于npm v 5.6中长文件路径的问题,升级到了nvm 1.1.6为我解决了这个问题。

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

相关问题

David263 picture David263  ·  3评论

eliavmaman picture eliavmaman  ·  6评论

thany picture thany  ·  4评论

petrovicz picture petrovicz  ·  4评论

SufyanParkar picture SufyanParkar  ·  4评论