我有一个 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 存储库很容易受到时间上的奇怪影响,存储库的确切内容高度依赖于您何时填充该存储库、指定依赖项版本的严格程度、依赖项的更改率以及依赖项维护者语义版本控制概念的严格性
就我而言,
- 我们已经使用 karma 很长时间了,目前使用的是 ~0.10.8,在我 rm -rf'd node_modules 之前,我的系统上使用的是 0.10.9
- 一位从事某项功能的同事几周前将 karma-mocha ^0.1.3 添加到了分支上的 package.json,但这允许更新到 karma-mocha 0.1.4;不幸的是,这不起作用,因为 karma-mocha 0.1.4 依赖于 karma ~0.12.0,目前解析为 0.12.8
今天,在该功能被合并并进入我的机器后,我进行了大量的调试。
我们使用的解决方案是:
- 锁定依赖版本控制,尤其是在重要的情况下; semver 很好,但是处理 Java 生态系统中的 SNAPSHOT 表明 semver 可能无法扩展
- 在我的工具中包含一些选项,以便在更卫生的环境中执行重要的构建,删除像node_modules这样的缓存;这些工具运行频率足够高,我们可以快速发现问题
关于node.js - npm install 在不同的计算机上给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21228399/