为什么npm install说我有未满足的依赖项?

Sea*_*sey 400 dependencies node.js npm

我有一个节点包.当我npm install从包根运行时,它安装了一堆东西,但随后打印了几个如下所示的错误消息:

npm WARN未满足依赖/ Users/seanmackesey/google_drive/code/explore/generator/node_modules/findup-sync/node_modules/glob需要graceful-fs@'~1.2.0'但会加载

我必须对确切的事情感到困惑npm install.如果它检测到依赖关系,不应该安装它吗?在什么条件下它会给我这样的错误消息,以及如何解决依赖关系?

dul*_*ule 395

我相信这是因为依赖解析有点破,请参阅https://github.com/isaacs/npm/issues/1341#issuecomment-20634338

以下是可能的解决方案:

  1. 手动需要安装包含未满足依赖项的顶级模块:npm install findup-sync@0.1.2

  2. 重新构造你的package.json.将所有高级模块(作为其他模块的依赖项)放在底部.

  3. 重新运行'npm install'命令.

问题可能是由于npm由于超时或其他原因导致无法下载所有程序包而导致的.

注意:您也可以使用npm install findup-sync@0.1.2手动安装失败的软件包.

在运行'npm install'之前,执行以下步骤可能会有所帮助:

  • 使用rm -rf node_modules /删除node_modules
  • 运行npm缓存清理

为什么有时需要"删除node_modules"?当嵌套模块在npm install期间无法安装时,后续的npm install将不会检测那些缺少嵌套的依赖项.

如果是这种情况,有时删除那些缺少嵌套模块的顶级依赖关系,并再次运行npm install就足够了.看到

  • 删除节点模块并清理缓存使它对我有用. (21认同)
  • @Soroush一味地将sudo添加到那些不能正常工作的东西上并没有神奇地修复它们,只是意味着你不知道最近发生了什么. (12认同)
  • 为什么npm的其他"解决方案"包括rm r node_modules?为什么在大多数情况下这真的是唯一的选择呢?这不是我认为包管理器应该如何工作的方式 (5认同)
  • 删除'node_modules',运行'npm cache clean',然后运行'npm install'修复了我的问题.我必须运行'npm_install'三次,直到我加载了所有依赖项而没有错误. (4认同)
  • 如果`npm cache clean`因访问原因不起作用,请尝试`sudo npm cache clean`. (2认同)

geo*_*eon 81

在WIFI发生故障时,它发生在我身上npm install.删除node_modules并重新运行npm install修复它.

  • 并尝试`npm cache clean`. (26认同)
  • 重新安装节点可能不是必需的,但在这之间,`npm cache clean`和删除`node_modules`之间,这个建议对我有用. (5认同)

zat*_*ine 33

我通过使用这些命令行修复了这个问题

  • $ rm -rf node_modules/
  • $ sudo npm update -g npm
  • $ npm install

完成!

  • 警告:你不应该在`npm`中使用sudo,而是建议改为npm想写的目录的权限或所有权. (8认同)
  • 在运行sudo npm update -g npm之后,我的npm被渲染为无用,任何安装任何东西的尝试都会导致"npm ERR!找不到模块'read-package-json'"我将不得不向下投票 (5认同)
  • 不要在 npm 中使用 `sudo` (2认同)

ste*_*hen 11

将NPM升级到最新版本可以极大地帮助解决这个问题.dule的回答是正确的,说依赖管理有点破,但似乎这主要是针对旧版本的npm.

该命令npm list为您提供所有已安装的列表node_modules.当我从1.4.2版升级到2.7.4版时,之前标记过的许多模块WARN unmet dependency都不再被注明.

要更新npm,您应该npm install -g npm在MacOSX或Linux上键入.在Windows上,我发现重新下载并重新运行nodejs安装程序是更新npm的更有效方法.


Vin*_*ula 9

删除node_modules目录后,上述答案对我没有帮助.

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

npm config set registry http://registry.npmjs.org/
Run Code Online (Sandbox Code Playgroud)

请注意,这会通过不安全的HTTP连接拉动节点模块.

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


Aka*_*ash 6

对于每个-- UNMET PEER DEPENDENCY,例如。-- UNMET PEER DEPENDENCY rxjs@5.0.0-rc.2, 安装该依赖项,npm install --save rxjs@5.0.0-rc.2直到不再有UNMET DEPENDENCIES.

祝你好运。

  • @WouterVanherck 你可以尝试“rm -rf node_modules”,然后“npm cache clean”和“npm install”。如果仍然不起作用,我建议您再次执行“rm -rf node_modules”,然后“npm i -g yarn”,然后“yarn install”。[Yarn](https://yarnpkg.com/en/) 非常好管理`node_modules`。祝你好运。 (2认同)

ach*_*inh 6

我运行npm list并安装了列为 UNMET DEPENDENCY 的所有软件包

\n\n

例如:

\n\n

\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 UNMET DEPENDENCY css-loader@^0.23.1
\nnpm install css-loader@^0.23.1

\n