为什么npm install说我有未满足的依赖关系?
我有一个节点包。 当我从软件包根目录运行npm install
,它安装了一堆东西,但是打印出几个如下所示的错误信息:
npm WARN unmet依赖关系/用户/ seanmackesey / google_drive / code / explore / generator / node_modules / findup-sync / node_modules / glob需要graceful-fs@'~1.2.0',但会加载
我必须对npm install
究竟做什么感到困惑。 如果它检测到依赖项,不应该安装它吗? 在什么情况下会给我这样的错误信息,以及如何解决依赖关系?
我相信这是因为依赖解决scheme有点破,请参阅https://github.com/isaacs/npm/issues/1341#issuecomment-20634338
您可能需要手动安装具有未满足依赖关系的顶级模块:
npm install findup-sync@0.1.2
或者构build你的package.json,这样任何顶级模块也是其他模块的依赖关系。
你的问题也可能是npm未能下载软件包,超时或什么都没有。 有时重新运行npm install
补救措施。 您也可以使用npm install findup-sync@0.1.2
手动安装失败的软件包。
在尝试npm install
之前可能会有帮助的其他步骤是:
- 使用
rm -rf node_modules/
- 运行
npm cache clean
解释为什么有时需要删除node_modules
:显然,如果在npm install
过程中嵌套的模块安装失败,后续的npm install
将不会检测到这些缺失的嵌套的依赖关系。 如果是这样的话,有时只要删除那些缺less嵌套模块的顶层依赖就足够了,再次运行npm install
。 请参阅https://github.com/npm/npm/issues/1336
在npm install
期间,WIFI发生故障时发生在我身上。 删除node_modules
并重新运行npm install
修复了它。
我通过使用这些命令行解决了这个问题
-
$ rm -rf node_modules/
-
$ sudo npm update -g npm
-
$ npm install
完成!
将NPM升级到最新版本可以极大地帮助解决这个问题。 上面dule的回答是正确的说,依赖pipe理有点破,但是这似乎主要是针对老版本的npm。
命令npm list
给出了所有安装的node_modules
的列表。 当我从版本1.4.2升级到版本2.7.4时,以前用WARN unmet dependency
标记的许多模块不再被注意到。
要更新npm,您应该在MacOSX或Linux上inputnpm install -g npm
。 在Windows上,我发现重新下载并重新运行nodejs安装程序是更新npm的更有效方法。
即使在删除了node_modules
目录之后,上面的答案也没有完全帮助我。
下面的命令最后帮助了我:
npm config set registry http://registry.npmjs.org/
请注意,这会通过不安全的HTTP连接拉节点模块。
Src: https : //stackoverflow.com/a/13119867/4082503
对于每一个-- UNMET PEER DEPENDENCY
,例如。 -- UNMET PEER DEPENDENCY rxjs@5.0.0-rc.2
,使用npm install --save rxjs@5.0.0-rc.2
安装这个依赖关系,直到你没有更多的UNMET DEPENDENCIES
。
祝你好运。
这为我解决了这个问题:
- 根据错误更正
package.json
的版本号; - 删除
node_modules
(rm -rf node_modules
); - 重新运行
npm install
。
重复这些步骤,直到没有更多的错误。
有些事情在类似的情况下,我会添加一个其他的步骤。
请注意,在npm版本> 1.4.9上,'npm install'安装devDependencies。 首先尝试删除现有的模块和caching:
remove node_modules $ rm -rf node_modules/ run $ npm cache clean
然后尝试:
npm install --dev npm update --dev
这至less会解决recursion依赖关系的解决scheme。
–devrecursion安装devDependencies(并永远运行..)它如何可以帮助解决版本差异?
您可以尝试删除node_moduls文件夹,然后清理npmcaching,然后再次运行“npm i”
我在安装React Native CLI时遇到了类似的问题。 我不知道在阅读这里的答案后,我应该删除哪个/node_modules
目录。 我最终跑了
npm update -g
之后就可以安装了。
我试图在运行npm install
的自动化部署系统上工作,所以很多这些解决scheme在自动化的时尚中不适合我。 我没有去删除/重新创buildnode_modules/
也不能轻易更改Node.js版本。
所以我结束了运行npm shrinkwrap
– 将npm-shrinkwrap.json
文件添加到我的部署包,并从那里运行安装。 这为我解决了这个问题。 把shrinkwrap文件当成'helper',npm似乎能够find正确的软件包并为我安装。 (Shrinkwrap也有其他function,但这是我在这个特定情况下所需要的)。
我在安装反应包的时候遇到了这个问题,这对我npm install --save <package causing this error>
: npm install --save <package causing this error>
我运行npm list
并安装了列为UNMET DEPENDENCY的所有软件包
例如:
├── UNMET DEPENDENCY css-loader@^0.23.1
npm install css-loader@^0.23.1
注意你的angular度版本,如果你在angular度2.xx下工作,所以也许你需要升级到angular度4.xx
一些依赖需要angular4
这里是如何安装angular4或更新您的项目的教程。
就我而言,npm的更新解决了它。
sudo npm install -g npm
更新到4.0.0
更新到4就像更新你的Angular依赖到最新版本一样简单,并且双重检查你是否想要animation。 这对大多数使用情况都适用。
在Linux / Mac上:
npm install @angular/{common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router,animations}@latest typescript@latest --save
在Windows上:
npm install @angular/common@latest @angular/compiler@latest @angular/compiler-cli@latest @angular/core@latest @angular/forms@latest @angular/http@latest @angular/platform-browser@latest @angular/platform-browser-dynamic@latest @angular/platform-server@latest @angular/router@latest @angular/animations@latest typescript@latest --save
然后运行你通常使用的任何ng服务或npm start命令,一切都应该工作。
如果您依赖animation,请从您的根NgModule
@angular/platform-browser/animations
导入新的BrowserAnimationsModule
。 没有这个,你的代码将被编译和运行,但是animation会触发一个错误。 从@angular/core
import已弃用,请使用新包的导入
import { trigger, state, style, transition, animate } from '@angular/animations';.