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

我已经安装了nodenv来pipe理我的电脑中node和npm的版本。 因为当我尝试安装像angular-cli,webpack,typescript,angular2等软件包时,我收到错误

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

某些软件包会告诉您这样的事情:“生成的项目具有需要Node 4.xx和NPM 3.xx的依赖关系”

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

第二个问题:我不喜欢这些软件包需要安装像全球(-g)和我看到的问题有时有安装的全球软件包之间的冲突。 示例错误:

npm WARN EPEERINVALID string-replace-loader@1.0.3 requires a peer of webpack@1.xx || 2.xx 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 

但是如果两个全局包使用相同的全局包,但是其中一些对每个包都使用不同的版本呢?

它最多npm包所有者在其package.json中定义所有上游依赖关系与一组可以一起工作的工作版本…挑战是作为包所有者使您的package.json尽可能松散,拉动这些依赖软件包的更新版本,但又足够紧凑,以至于你发布的软件包仍能正常工作

通常情况下,这不会导致版本不匹配调用的错误…如果可能的话,总是使用最新的包版本,这也是为了nodejs本身

当package.json提到像3.xx这样的版本时,这意味着它应该可以和任何xx值一起工作,所以只需要select最高的数字来适应模式

尽可能避免进行全局安装,除非它用于命令行可执行文件…对于代码所引入的包而言,这尤其适用于与可执行中心包

更新我现在能够成功安装这个

 npm install -g angular-cli 

使用最新版本的节点

 node --version v6.5.0 

所以我build议你升级自己的项目代码和节点版本,以避免失效的固定版本,并与最新的版本一起工作