在NPM 5.0.1更新后ng服务错误:无效版本:

Ben*_*cot 9 npm angular

我刚刚更新到NPM 5.0.1,我立即在Angular 4.1.3项目中遇到了编译错误.删除并完全重新安装我的node_modules (所有包最新)后,运行时出现奇怪的红色错误ng serve:

Invalid Version: https://registry.npmjs.org/@angular/core/-/core-4.1.3.tgz
TypeError: Invalid Version: https://registry.npmjs.org/@angular/core/-/core-4.1.3.tgz
    at new SemVer (/Users/bracicot/dev/recruitler/node_modules/semver/semver.js:293:11)
    at new Version (/Users/bracicot/dev/recruitler/node_modules/@angular/cli/upgrade/version.js:23:36)
    at Function.assertAngularVersionIs2_3_1OrHigher (/Users/bracicot/dev/recruitler/node_modules/@angular/cli/upgrade/version.js:80:23)
    at Class.run (/Users/bracicot/dev/recruitler/node_modules/@angular/cli/commands/serve.js:102:27)
    at Class.Command.validateAndRun (/Users/bracicot/dev/recruitler/node_modules/@angular/cli/ember-cli/lib/models/command.js:128:15)
    at /Users/bracicot/dev/recruitler/node_modules/@angular/cli/ember-cli/lib/cli/cli.js:92:22
    at tryCatch (/Users/bracicot/dev/recruitler/node_modules/rsvp/dist/rsvp.js:539:12)
    at invokeCallback (/Users/bracicot/dev/recruitler/node_modules/rsvp/dist/rsvp.js:554:13)
    at /Users/bracicot/dev/recruitler/node_modules/rsvp/dist/rsvp.js:629:16
    at flush (/Users/bracicot/dev/recruitler/node_modules/rsvp/dist/rsvp.js:2414:5)
    at _combinedTickCallback (internal/process/next_tick.js:95:7)
    at process._tickCallback (internal/process/next_tick.js:161:9)
Run Code Online (Sandbox Code Playgroud)

对于导致NPM倒退的原因,我有点难过.似乎也没有任何关于它的网上任何事情.

更新:NPM添加了一个package-lock.json文件.无效版本来自那里.

更新2:重新安装CLI后,我得到的 Cannot find module 'webpack/lib/node/NodeTemplatePlugin'可能是package.jsonpackage-lock.json不同步?

更新3:特别感谢@ Dylanb124是的,NPM5肯定是错误的,第一个问题是使用不正确的值创建的包锁文件...这个问题有很多,我已经解决了.我的开发合作伙伴能够让NPM 5与一个新的NG项目合作.因此,我们将工作版本与我们的回购匹配,直到它正确构建.主要的冲突是支持node和mongo(hammer.js)的软件包以及我能够永久删除的其他软件包.(一些清理无论如何)最终我们能够让它运行起来.我建议尽可能长时间等待升级到NPM 5x

Ced*_*Ced 16

在npm 5.0.2上对我有用的东西

  1. 删除node_modules

  2. rm -f package-lock.json && npm install


Dyl*_*124 4

概括

此问题可能与包版本控制完全无关。尝试以下操作:

  1. 删除node_modules中的所有子文件夹。
  2. 执行npm install并注意任何初始错误或警告,尤其是涉及下载/安装软件包问题的错误或警告。
  3. 通过手动安装包npm install --save <package-name> 并使用 重建它npm rebuild <package-name>

此时,您可以尝试构建 Angular 包,希望能够成功构建。

细节

我一直在处理同样的构建问题。然而,我能够在一台机器上构建 Angular 项目,但不能在另一台机器上构建。两台机器都使用相同版本的 NPM (5.0.1) 和 Node (7.10.0)。

似乎有关不正确版本的错误消息与根本原因完全无关。您可以尝试清除您的node_modules文件夹,然后执行npm install.

就我而言,我看到了许多与node-sass npm 包相关的警告和错误。该包似乎试图从无效的 Github URL 下载,这意味着它从未被下载,并导致了许​​多构建错误。

我的特定解决方案涉及手动安装它尝试下载的包,然后手动重建该包(请参阅node-sass issues 1601)。

我仍在尝试找到真正的根本原因,因为没有理由认为这应该是一台机器上的问题,而不是另一台机器上的问题。我将用任何发现更新这篇文章。我相信这可能是一个安装问题,因为我在两台机器之间安装了不同的 NPM 5。

更新

  • 卸载 NodeJs/NPM,重新安装并升级到 NPM 5.0.2 似乎没有什么区别。
  • 删除 node_modules 文件夹并在仍在构建的计算机上重新安装软件包导致成功复制问题,并且现在不再构建。
  • 在尝试了不同版本的 Nodejs、npm 和许多其他软件包之后,我认为 NPM 5 目前 bug 太多。我暂时回滚到 NPM 4。