我有一个节点包。当我从包的根目录运行npm install时,它安装了一堆东西,但随后打印了一些错误消息,看起来像这样:

npm WARN unmet dependency /Users/seanmackesey/google_drive/code/explore/generator/node_modules/findup-sync/node_modules/glob需要grace -fs@'~1.2.0'但会加载

我一定很困惑npm install到底做了什么。如果它检测到依赖项,难道不应该安装它吗?在什么情况下它会给我这样的错误消息,我如何解决依赖关系?


当前回答

——dev递归地安装devDependencies(并且它会永远运行..) 它如何帮助解决版本差异?

你可以尝试删除node_modules文件夹,然后清理npm缓存,然后再次运行'npm i'

其他回答

我在安装React Native CLI时遇到了类似的问题。我不确定在阅读这里的答案后应该删除哪个/node_modules目录。我最终还是跑了

NPM update -g

然后就能安装这个包了。

类似的事情,我想再加一步。

注意,在npm版本> 1.4.9上,'npm install'确实安装了devDependencies。首先尝试删除现有模块和缓存:

remove node_modules $ rm -rf node_modules/
run $ npm cache clean

然后尝试:

npm install --dev
npm update --dev

这至少可以解决递归依赖项解析。

NPM install将从NPM -shrinkwrap安装所有的包。Json,但可能会忽略package中的包。Json,如果它们没有在前者中预设。

如果你的项目有npm-shrinkwrap。Json,确保你运行NPM shrinkwrap来重新生成它,每次你添加/删除/更改package.json。

即使在删除node_modules目录后,上面的答案也没有完全帮助我。

下面的命令终于帮助了我:

npm config set registry http://registry.npmjs.org/

注意,这将通过不安全的HTTP连接来拉节点模块。

Src: https://stackoverflow.com/a/13119867/4082503

如果你在angular 2.x下工作,请注意你的angular版本。所以你可能需要升级到angular 4.x.x

有些依赖需要angular 4

下面是一个关于如何安装angular 4或更新你的项目的教程。