Npm ERR!在npm安装中出现无效版本

21

每次运行npm install时,我都会得到

npm ERR! Invalid Version:

这是日志文件。

43 verbose stack TypeError: Invalid Version: 
43 verbose stack     at new SemVer (C:\Users\Myself\AppData\Roaming\npm\node_modules\npm\node_modules\semver\classes\semver.js:38:13)
43 verbose stack     at compare (C:\Users\Myself\AppData\Roaming\npm\node_modules\npm\node_modules\semver\functions\compare.js:3:32)
43 verbose stack     at Object.gte (C:\Users\Myself\AppData\Roaming\npm\node_modules\npm\node_modules\semver\functions\gte.js:2:30)
43 verbose stack     at Node.canDedupe (C:\Users\Myself\AppData\Roaming\npm\node_modules\npm\node_modules\@npmcli\arborist\lib\node.js:1054:32)
43 verbose stack     at PlaceDep.pruneDedupable (C:\Users\Myself\AppData\Roaming\npm\node_modules\npm\node_modules\@npmcli\arborist\lib\place-dep.js:465:14)
43 verbose stack     at PlaceDep.placeInTree (C:\Users\Myself\AppData\Roaming\npm\node_modules\npm\node_modules\@npmcli\arborist\lib\place-dep.js:326:14)
43 verbose stack     at PlaceDep.place (C:\Users\Myself\AppData\Roaming\npm\node_modules\npm\node_modules\@npmcli\arborist\lib\place-dep.js:214:10)
43 verbose stack     at new PlaceDep (C:\Users\Myself\AppData\Roaming\npm\node_modules\npm\node_modules\@npmcli\arborist\lib\place-dep.js:71:10)
43 verbose stack     at C:\Users\Myself\AppData\Roaming\npm\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\build-ideal-tree.js:965:31
43 verbose stack     at Array.map (<anonymous>)
44 verbose cwd C:\Users\Dont\Want\To\Reveal\This\Information
45 verbose Windows_NT 10.0.19042
46 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\Myself\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "i" "-force"
47 verbose node v16.14.0
48 verbose npm  v8.5.1
49 error Invalid Version: 
50 verbose exit 1
51 timing npm Completed in 18500ms

我不明白哪个版本是无效的?请帮忙!


如果您能提供您的 package.json 文件,那将会很有帮助。请提供整个文件,或者至少包括 "version": "x.x.x""dependencies" 下的所有内容。 - Henke
8个回答

33

删除node_modulespackage-lock.json (OR yarn.lock)解决了我的问题。


1
有时候你只是想让它工作起来,而不必深入挖掘并理解 npm 的所有细微差别。 - Pavel 'Strajk' Dolecek
1
谢谢,只是删除package.lock对我有用。 - nisanarz
3
好的,删除package-lock.json可以解决问题,但问题是为什么?如何知道错误来自哪里? 在Angular 13应用程序中,我收到了“error Invalid Version: ^5.0.0”的错误。但是为什么?哪个包?我在日志中没有看到它。可能是package.json中的这个:"resolutions": { "webpack": "^5.0.0" } - Raphael Pinel
rm -f node_modules rm package-lock.json npm cache clean --force - Leffa
有人找到这个问题的根本解决办法吗?如果这是在每次都进行全新安装的管道中发生的,那么这些解决方案都不起作用。 - almcaffee
显示剩余2条评论

5

删除 package-lock.jsonnode_modules/.package-lock.json,然后再次运行 npm install 命令。

这样做可以解决我的问题,而无需删除和重新下载所有已正确安装的模块。


这实际上解决了我的问题。我不必删除整个node_modules文件夹。 - Sojimaxi

3

试一试这个方法

  • 删除文件夹 npm_modules
  • 删除文件 package.json.lock
  • npm cache clean --force

然后再次尝试安装


1
我想问为什么这个可以工作。 - Robin Bastiaan
rm -f node_modules rm package-lock.json npm cache clean --force - Leffa
1
不建议删除锁文件,您可能会无意中破坏某些内容。 - astroanu

2

我曾经在使用npm@8.12时遇到了同样的错误,通过降级至npm@8.5版本解决了该问题。


实际上,你升级了npm的版本而不是降级。 - Saeed Hemmati
2
@SaeedHemmati 8.5低于8.12。 - Maxime Chéramy

1

解决方案: 如果你在项目的根目录下检查“package.json”文件,很可能缺少以下一个或多个属性:

  1. name
  2. version

对于版本,它必须是“x.x.x”的形式,例如在我的(以及可能是你的)情况下是“1.0.0”

对于名称,你可以从“app.json”中获取,例如在我的情况下:

{                                                                                                                                                                   
     "expo": {
       "name": "the-10-min",
       "slug": "the-10-min",
       "privacy": "public",
       "platforms": [
         "ios",
         "android",
         "web"
      ],

在我的情况下,"package.json" 文件中的 name 属性将是 "the-10-min"。填入 name 和 version 的值,然后运行命令 "npm install"。


0

您还应确保app.json和package.json中的名称属性相同-在我的文件中它们不同,导致了错误。


0

如果错误仍然存在,您应该像我一样从package.json中删除版本键内容。

package.json


0
在克隆旧项目后遇到了类似的问题。尝试了所有这些解决方案,但都没有成功。结果发现我的问题是由于废弃的软件包版本引起的。我删除了它们,并逐渐添加它们,直到找出哪些是给我带来问题的。幸运的是,这些软件包的新版本没问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接