node.js - npm install 在不同的计算机上给出不同的结果

标签 node.js npm

我有一个 Node 项目,它在不同计算机上的 npm install 上产生不同的结果。

该项目位于: https://github.com/guy-mograbi-at-gigaspaces/gs-ui-ks

在我的机器上,npm 完成且没有错误。我的详细信息是:

 - node 0.10.7
 - npm 1.3.9

在另一个团队成员的计算机上,它会产生以下错误:

npm ERR! peerinvalid The package karma does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer grunt-karma@0.5.4 wants karma@~0.9.4 || ~0.10
npm ERR! peerinvalid Peer karma-mocha@0.0.4 wants karma@~0.9
npm ERR! peerinvalid Peer karma-chrome-launcher@0.1.2 wants karma@>=0.9.3
npm ERR! peerinvalid Peer karma-firefox-launcher@0.1.3 wants karma@>=0.9
npm ERR! peerinvalid Peer karma-html2js-preprocessor@0.1.0 wants karma@>=0.9
npm ERR! peerinvalid Peer karma-jasmine@0.1.5 wants karma@>=0.9
npm ERR! peerinvalid Peer karma-requirejs@0.2.1 wants karma@>=0.9
npm ERR! peerinvalid Peer karma-script-launcher@0.1.0 wants karma@>=0.9
npm ERR! peerinvalid Peer karma-coffee-preprocessor@0.1.2 wants karma@>=0.9
npm ERR! peerinvalid Peer karma-phantomjs-launcher@0.1.1 wants karma@>=0.9

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "c:\\Program Files (x86)\\nodejs\\node.exe" "c:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! cwd c:\buildserver\buildagent\workspace\root\ui\build-node-project\build-ks
npm ERR! node -v v0.10.15
npm ERR! npm -v 1.3.24
npm ERR! code EPEERINVALID
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     c:\buildserver\buildagent\workspace\root\ui\build-node-project\build-ks\npm-debug.log
npm ERR! not ok code 0

我们都有 Windows 7。我想避免这样的说法:它可以在我的机器上运行。为什么会发生这种情况以及将来如何避免这种情况?

编辑:

仅供引用 - 为了解决此问题,我们将所有依赖项更改为“*”(最新版本)。然而,我想弄清楚其中的差异,以避免将来出现破裂和尴尬。

最佳答案

@throrin19 是正确的,在这种情况下,直接答案是 rm -rf node_modules/karma-* 并重新安装。

而且您也认为环境之间的差异是以前的 karma 安装是正确的。

我今天调试了一个非常相似的问题并了解到:

  • 当安装的版本仍然满足 package.json 中指定的版本时,npm (1.3.17) 不会尝试安装已安装的依赖项
  • npm 当然会去尝试查找最近添加的依赖项

即本地 npm 存储库很容易受到时间上的奇怪影响,存储库的确切内容高度依赖于您何时填充该存储库、指定依赖项版本的严格程度、依赖项的更改率以及依赖项维护者语义版本控制概念的严格性

就我而言,

  1. 我们已经使用 karma 很长时间了,目前使用的是 ~0.10.8,在我 rm -rf'd node_modules 之前,我的系统上使用的是 0.10.9
  2. 一位从事某项功能的同事几周前将 karma-mocha ^0.1.3 添加到了分支上的 package.json,但这允许更新到 karma-mocha 0.1.4;不幸的是,这不起作用,因为 karma-mocha 0.1.4 依赖于 karma ~0.12.0,目前解析为 0.12.8

今天,在该功能被合并并进入我的机器后,我进行了大量的调试。

我们使用的解决方案是:

  1. 锁定依赖版本控制,尤其是在重要的情况下; semver 很好,但是处理 Java 生态系统中的 SNAPSHOT 表明 semver 可能无法扩展
  2. 在我的工具中包含一些选项,以便在更卫生的环境中执行重要的构建,删除像node_modules这样的缓存;这些工具运行频率足够高,我们可以快速发现问题

关于node.js - npm install 在不同的计算机上给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21228399/

相关文章:

javascript - 包裹本地主机服务器未更新

node.js - npm install 安装,但 node_modules 为空

node.js - 尝试使用 "karma init"初始化 karma 配置文件。但不工作

node.js - Gatsby - 无法解析 'path' 中的 'C:\Users\...\gatsby-starter-hello-world\node_modules\postcss\lib'

javascript - 我无法停止异步

node.js - meteor node.js最新版

docker - 无法运行官方Docker教程容器:npm ERR!缺少脚本:开始

javascript - 从 HTML 字符串中解析所有 URL 的最佳方法是什么?

javascript - 水线 (Sails.js) : AND conditions

node.js - 错误 : functions predeploy error: Command terminated with non-zero exit code254