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

时间:2017-06-02 12:11:33

标签: angular npm

我刚刚更新到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)

对于导致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

3 个答案:

答案 0 :(得分:16)

在npm 5.0.2上对我有用的东西

  1. 删除node_modules

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

答案 1 :(得分:4)

摘要

此问题可能与程序包版本控制完全无关。尝试以下方法:

  1. 删除node_modules中的所有子文件夹。
  2. 执行npm install并注意任何初始错误或 警告,特别是涉及问题的警告 下载/安装包。
  3. 通过npm install --save <package-name>手动安装软件包 并使用npm rebuild <package-name>重建它。
  4. 此时,您可以尝试构建Angular包,希望能够成功构建。

    详细

    我一直在处理相同的构建问题。但是,我能够在一台机器上构建Angular项目,而不是另一台机器。两台机器都使用相同版本的NPM(5.0.1)和节点(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目前还是太麻烦了。我暂时回到NPM 4。

答案 2 :(得分:1)

  

运行此命令。这有帮助

N=30                # number of maximum simulations per K
K=seq(10,30,1)      # maximum number of animals per group
ES=seq(1,2,0.1)     # mean difference compared to control

x=array(data=NA, 
        dim=c(N,length(K),length(ES)), 
        dimnames =list(paste("Sim",1:N, sep=""),
                       paste("Total Number of Animals=",min(K):max(K), sep=""),
                       ES))  # 3-dimensional matrix in which to store the values
for (q in ES){
  for (j in K){
    for (i in 1:N){
      controle<-rnorm(j,popmeansum$V3, 1.490918)
      new<-rnorm(j,popmeansum$V3-q, 1.490918)
      fit<-t.test(controle, new, alternative ="greater") 
      x[i,j,q]<-fit$p.value
    }
  }
}

然后尝试

  

ng serve