Nvm-windows: npm失败:“找不到模块'semver'(节点v8.4.0)

创建于 2017-09-15  ·  39评论  ·  资料来源: coreybutler/nvm-windows

如果这是有关如何使用NVM4W的问题,请改用stackoverflow

如果这是有关防病毒的问题,请确保首先搜索现有问题。

我的环境

  • [] Windows 7或更低版​​本(由于EOL不受真正支持-有关详细信息,请参见Wiki)
  • [] Windows 8
  • [] Windows 8.1
  • [X] Windows 10
  • [] Windows 10 IoT核心版
  • [] Windows Server 2012
  • [] Windows Server 2012 R2
  • [] Windows Server 2016

  • []我的Windows安装不是英语。

我正在使用NVM4W版本:

  • [] 1.1.6
  • [X] 1.1.5
  • [] 1.1.4
  • [] 1.1.3
  • [] 1.1.2
  • [] 1.1.1
  • []较旧
  • []其他(请指定)

我已经...

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

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

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

预期行为

返回正确的版本号。

实际行为

module.js:491
犯错
^

错误:找不到模块“ semver”
在Function.Module._resolveFilename(module.js:489:15)
在Function.Module._load(module.js:439:25)
在Module.require(module.js:517:17)
在要求时(internal / module.js:11:18)
在对象。(C:\ Users \ leofu \ AppData \ Roaming \ nvm \ nvm \ v8.4.0 \ node_modules \ npm \ lib \ utils \ unsupported.js:2:14)
在Module._compile(module.js:573:30)
在Object.Module._extensions..js(module.js:584:10)
在Module.load(module.js:507:32)
在tryModuleLoad(module.js:470:12)
在Function.Module._load(module.js:462:3)
module.js:491
犯错
^

错误:找不到模块“ semver”
在Function.Module._resolveFilename(module.js:489:15)
在Function.Module._load(module.js:439:25)
在Module.require(module.js:517:17)
在要求时(internal / module.js:11:18)
在对象。(C:\ Users \ leofu \ AppData \ Roaming \ nvm \ nvm \ v8.4.0 \ node_modules \ npm \ lib \ utils \ unsupported.js:2:14)
在Module._compile(module.js:573:30)
在Object.Module._extensions..js(module.js:584:10)
在Module.load(module.js:507:32)
在tryModuleLoad(module.js:470:12)
在Function.Module._load(module.js:462:3)

重现此问题的步骤:

nvm安装8.4.0
nvm使用8.4.0
npm -v

help wanted

最有用的评论

与最新的8.8.1相同。
不知道如何通过NVM解决此问题,因为SO建议的只是干净地重新安装节点。 鉴于nvm安装的性质,不确定如何复制这些步骤。 因此,使用节点v8的唯一方法就是不使用NVM?
https://stackoverflow.com/questions/33870520/npm-install-cannot-find-module-semver

解决方法

  1. nvm install 8.8.1 (或您想要的其他版本)。 请勿切换到它(尚未)。
  2. 从官方网站(https://nodejs.org/en/download/current/)下载相同节点版本的* .zip
  3. %APPDATA%/nvm/v8.8.1/npm的内容替换为下载档案中的npm文件夹
  4. nvm use 8.8.1
  5. 请享用

所有39条评论

这是一个npm错误,不完全是一个NVM错误。 我建议重新安装节点8.4.0 ....也许npm下载错误或某些东西已损坏。

@coreybutler它不起作用,甚至在停用,卸载,手动删除文件夹以及重新安装并重新激活后仍会失败。 同样的错误。

我什至从节点8.5.0的另一个正常工作安装中复制了npm的node_modules依赖关系,仍然遇到了麻烦。 您能否进一步研究它,看看问题出在哪里?

nvm是一个非常方便的工具,但是无法正常工作了,真可惜:(

不知道该告诉您什么...。我可以使用相同的设置安装semver

image

@coreybutler刚刚打开了一个新的细节

我自己的环境以及我用来在此处复制问题的步骤(封闭重复):#305

与最新的8.8.1相同。
不知道如何通过NVM解决此问题,因为SO建议的只是干净地重新安装节点。 鉴于nvm安装的性质,不确定如何复制这些步骤。 因此,使用节点v8的唯一方法就是不使用NVM?
https://stackoverflow.com/questions/33870520/npm-install-cannot-find-module-semver

解决方法

  1. nvm install 8.8.1 (或您想要的其他版本)。 请勿切换到它(尚未)。
  2. 从官方网站(https://nodejs.org/en/download/current/)下载相同节点版本的* .zip
  3. %APPDATA%/nvm/v8.8.1/npm的内容替换为下载档案中的npm文件夹
  4. nvm use 8.8.1
  5. 请享用

谢谢@ roman-spiridonov刚在Windows上通过nvm安装的节点8.8.1上遇到了相同的错误,您的解决方法似乎可以胜任

似乎也可以使用最新版本的节点(9.1.0)进行工作。

似乎从npm安装的npm thats与节点本身不兼容,您必须下载zip并替换npm模块,例如@ roman-spiridonov建议

@coreybutler这将无法解决吗? 我看到完全相同的错误-高于= <8.0的任何值。

不幸的是,我无法运行npm i semver我得到了相同的错误。

@ roman-spiridonov我找不到“ npm”是一个文件夹,而是下载的.zip中的文件。 用下载的替换它似乎并不能解决我遇到的问题(我知道其他人都成功了)

我也有同样的问题。

@ roman-spiridonov的解决方法为我工作。

node 8.9.1
npm 5.5.1

@hyndsite,您需要在node_modules目录中查找-在该目录中是npm目录。 使用它,它应该工作。

谢谢@powellian,我昨天发现了这个消息,并且打算对@ roman-spiridonov消息发布新的更新-正确的路径是%APPDATA%/nvm/v8.8.1/node_modules/npm

/nvm/vx.xx路径中的“ npm”文件有助于解决此问题。

谢谢,它有效,但是现在我想知道为什么nvm下载的软件包与我们下载的软件包不同?

8.9.0和@ roman-spiridonov的解决方法也存在相同的问题,这节省了一天的时间。

@benavern一样,我很好奇nvm安装的软件包为什么不同于官方仓库中的软件包。

与最新的8.9.4相同。
通过删除目录'C:\ Users \您的名字\ AppData \ Roaming \ nvm \ v *'并重新执行'nvm install'解决了该错误。

解决方法:

如果您遇到此问题并且使用Windows 10,请使用注册表编辑器或本地组策略编辑器启用长路径。

参考: https :
参考: https :

但是对我来说,我仍然需要执行@ roman-spiridonov的解决方法。 但是,我无法在资源管理器中复制npm文件夹,而是需要使用robocopy:

robocopy "C:\Users\username\Downloads\node-v8.9.4-win-x64\node_modules\npm" "C:\Users\username\AppData\Roaming\nvm\v8.9.4\node_modules\npm" /mir

替代它以移动nvm根目录。 在安装新节点之前执行nvm root C:\nvm
可能还需要将其他文件复制到新的根目录。
如果已经安装,则:

nvm uninstall 8.x.x
nvm root C:\nvm
copy /Y %APPDATA%\nvm\* C:\nvm
nvm install 8.x.x

我遇到了同样的问题(错误:找不到模块'semver')。

一些提示,助您一臂之力:

文件比较(使用官方zip文件)显示,在node_modules\npm下确实存在> 4k个文件和文件夹。 看来解压缩已终止。 已检查v8.9.1和v8.9.4:缺少按字母顺序在libnpx之后的所有node_modules。 如果它与那些可笑的嵌套文件夹结构相关,也不会感到惊讶: ...\nvm\v8.9.4\node_modules\npm\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\

我选择了当前的nvm-windows大师,在nvm.go内的安装函数中添加了一些调试信息,对其进行了编译(使用Go 1.10 win x64),并将nvm.exe替换为新的。 结果:

  • 实际上下载到临时目录_is_的npm zip文件是官方的。 ( @benavern@Akamaozu
  • 该zip文件已在temp目录中完全提取,并移至特定于版本的文件夹。 没有丢失的文件。

现在对于令人惊讶的部分,当我尝试发现回归时:

  • 签出标签1.1.6,进行编译(无任何更改),用新的替换nvm.exe,删除v8.9.4,运行nvm install 8.9.4 =>成功,没有丢失的文件
  • 签出标签1.1.5,进行编译(无任何更改),用新的替换nvm.exe,删除v8.9.4,运行nvm install 8.9.4 =>成功,没有丢失的文件
  • 从官方的nvm-windows设置(1.1.5)中将nvm.exe替换为原始版本,删除了v8.9.4,运行了nvm install 8.9.4 =>仍然错误,文件丢失。

在我看来,构建过程和/或环境存在问题。

如果有人可以尝试通过build.bat或go build src/nvm.go重新创建nvm.exe来解决该问题,那将很棒。

HTH,代码外壳

从文件夹下面删除npm文件夹
C:\ Users用户名\ AppData \ Roamingnpm
之后=> npm install
它对我来说很好!....

今天刚遇到这个问题,这对我有用。
1)打开bash终端
2)将CD放入C:\ Users用户名\ AppData \ Roamingnpm \ node_modules \
3)应该看到一个package.json
4)纱线安装

@codeshell感谢您的分析。 我发现问题是由于Windows上不支持的长路径所致。 对我来说,即使下载了npm zip文件并替换了C:\ Users \您的名字\ AppData \ Roaming \ nvm \ 9.11.1npm的内容,我仍然收到错误。 实际上,由于名称太长,我无法从下载的npm zip文件中复制所有文件。

为避免这种情况,我卸载了节点版本9.11.1,然后卸载了nvm。 在C:\ nvm中重新安装了nvm。 现在,我正常的“ nvm install 9.11.1”工作正常,并且通过运行“ npm -v”可以确认“ npm”也处于良好状态。

我知道这是一个相当大的解决方法,但只需要执行一次即可。

我按照这些步骤操作,它解决了我的问题

  1. 卸载Node.js
  2. 删除以下文件夹的内容
    C:\ Users \\ AppData \ Roamingnpm-cache
    C:\ Users \\ AppData \ Roamingnpm
    C:\ Program档案\ nodejs
  3. 然后再次安装Node _ https://nodejs.org/en/_

通过nvm 1.6.0安装节点对我有用

就我而言,路径太长。 我选择c:\ nvm作为安装目录版本管理器,并选择c:\ nodejs作为symlink目录。 这似乎为我解决了这个问题。

我在节点v10.4.0上遇到了同样的问题,而roman-spiridonov的变通办法为我工作。

在安装nvm-windows之前,我已经删除了%AppData%\npm等。

尝试启动10.4.1并开始运行时,最初遇到了问题。

在手动从安装位置删除文件夹并再次通过nvm安装后,它可以正常工作。 不知道这是否太长了(显然不是) C:\Users\muser\AppData\Roaming\nvm\v10.4.1

v10.5.0的相同问题和roman-spiridonovs解决方案也对我

安装最新的节点v10.6.0时,我有相同的探针,然后我将其卸载并切换到v8.11.3,问题已解决。

我还尝试直接下载npm-v6.1.0.zip,在解压缩时确实有一些错误。

10.6.0中遇到了与@shadeofgod相同的问题。 切换到8.11.3即可解决。

完整的首次安装完整版10.6.0-64bit仍然存在问题。 (之前没有节点/ npm)。 roman-spiridonovs解决方案继续运行(对我来说,现在可以在[...node]\node_modules\npm找到npm-folder)

为什么将近整整一年仍然是一个问题?

刚在Windows 10上遇到此问题。

启用Win32长路径可以解决此问题。 参见@apptaro的帖子2018-02-15

启用长路径后,我重新启动了Windows以使更改生效。
我还必须手动删除损坏的npm安装。

之后,我可以使用nvm再次安装npm nvm

我觉得,如果未启用长路径,Windows下的nvm应该发出警告。 nvm install也不应默默地失败。

为了我:

  • 我发现nvm install 9.11.2是通过nvm运行的最新版本。
  • 网站上的zip文件覆盖适用于任何版本。
  • 长路径修复似乎不起作用(尽管我不认为在更改注册表设置后尝试重新启动计算机)。

这是我们用于新手的powershell脚本。 希望重新启动后,他们应该能够将其更新到更高版本。

# Get Chocolatey which is required for the rest of this script
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
choco feature enable -n=allowGlobalConfirmation
choco upgrade chocolatey

choco upgrade nvm
$env:NVM_HOME = [System.Environment]::ExpandEnvironmentVariables([System.Environment]::GetEnvironmentVariable("NVM_HOME","Machine"))
$env:NVM_SYMLINK = [System.Environment]::ExpandEnvironmentVariables([System.Environment]::GetEnvironmentVariable("NVM_SYMLINK","Machine"))
$env:Path = [System.Environment]::ExpandEnvironmentVariables([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))

# Enable long paths in windows - may avoid npm issue https://github.com/coreybutler/nvm-windows/issues/302
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1 -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path 'HKLM:\SYSTEM\ControlSet001\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1 -PropertyType DWORD -Force | Out-Null

nvm install 9.11.2
nvm use 9.11.2

不知道该告诉您什么...。我可以使用相同的设置安装semver

image

我认为运行“ npm install”将解决问题,就像对我所做的那样;)

我相信@momochanmo刚忘记在他们的项目中安装semver软件包。 它具有相同的错误消息,但这是一个完全不同的问题。

回顾一下:该线程是关于nvm安装了npm的损坏版本以及semver软件包的丢失/损坏版本的事实,这使其无法使用。

到目前为止,最有可能建议的根本原因是,大约3年前引入Go编译器的错误/行为更改导致了一个错误,该错误在安装过程中被静默吞噬。 参见https://github.com/coreybutler/nvm-windows/pull/370。

因此,如果您认识某个对Windows感兴趣的人并且对Go充满热情,那么现在正是抓住他们的肩膀并为其提供这一绝佳职业发展机会的好时机😅

我按照这些步骤操作,它解决了我的问题

  1. 卸载Node.js
  2. 删除以下文件夹的内容
    C:\用户\ AppData \ Roamingnpm-cache
    C:\用户\ AppData \ Roamingnpm
    C:\ Program档案\ nodejs
  3. 然后再次安装Node _ https://nodejs.org/en/_

遵循此为我工作。 您是救生员!!!! 谢谢<3

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

相关问题

martijnsenden picture martijnsenden  ·  3评论

fredericrous picture fredericrous  ·  3评论

AllainPL picture AllainPL  ·  7评论

snerte picture snerte  ·  5评论

flpms picture flpms  ·  4评论