npm和节点版本不兼容会产生错误

时间:2016-08-31 01:31:59

标签: node.js npm

我已经安装了nodenv来管理我的电脑中节点和npm的版本。因为当我尝试安装诸如angular-cli,webpack,typescript,angular2等的包时,我会收到错误

第一个问题:安装软件包时,版本节点或npm是否会产生错误?

有些软件包会说:"生成的项目具有需要Node 4.x.x和NPM 3.x.x的依赖项。"

但是他们没有提到确切的版本。通过示例节点4.1.5的版本是否会产生错误,而不是版本4.0.5?

第二个问题: 我不喜欢这些软件包需要像全局(-g)一样安装,而且我看到的问题有时在安装的全局软件包之间存在冲突。 示例错误:

npm WARN EPEERINVALID string-replace-loader@1.0.3 requires a peer of webpack@1.x.x || 2.x.x but none was installed.

PhantomJS not found on PATH
Downloading https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-macosx.zip

但是,如果两个全局包使用相同的全局包,但是有些包使用不同版本的每个包呢?

1 个答案:

答案 0 :(得分:1)

由npm包所有者在他们的package.json中定义所有上游依赖项和一组可以很好地协同工作的工作版本...挑战是作为包所有者使你的package.json尽可能松散上游依赖关系,以便能够提取这些依赖包的较新版本,但又足够严密,以至于您发布的包仍可正常工作

通常不会导致版本不匹配调用错误......如果可能的话总是使用最新的软件包版本,这也适用于nodejs本身

当package.json提到诸如3.x.x之类的版本时,这意味着它应该适用于x.x的任何值,所以只需选择最大数字以适合模式

尽可能避免进行全局安装,除非是针对命令行可执行文件...对于代码插入的包而不是可执行的中心包

尤其如此

更新 我现在能够成功安装

npm install -g angular-cli

使用最新版本的节点

node --version
v6.5.0

因此我建议您升级自己的项目代码和节点版本,以避免该固定版本失败并使用最新版本