【问题标题】:npm install is missing modulesnpm install 缺少模块
【发布时间】:2014-08-30 10:04:41
【问题描述】:

在我的项目中运行gulp 之前,我需要运行npm install。这在我的计算机上除外,因为我收到以下错误:

Error: Cannot find module 'socket.io'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    ...

我可以解决这个问题

$> npm install socket.io

现在当我再次执行安装命令时,我得到了

Error: Cannot find module 'di'
    ...

当我安装 di 并再次运行安装命令时,我得到:

Error: Cannot find module 'log4js'

我认为这可能会持续很长时间。任何建议这里发生了什么以及如何解决这个问题?

【问题讨论】:

  • 我继承了一个项目,其中原作者显然全局安装了所有依赖项或没有 -S 标志。这里没有答案真正回答了这个问题。有没有办法通过静态分析自动安装在构建时在项目文件中导入的所有缺失依赖项?

标签: node.js npm bower gulp


【解决方案1】:

运行npm install 将安装package.json 中指定的所有依赖项。似乎您有很多未以这种方式定义的依赖项。使用npm install packageName --save,npm 会将包添加到您的package.json

【讨论】:

  • 我的 package.json 文件中有大约 50 个包。据我所知,这些包的依赖是由这些包的package.json来处理的!
  • @JeanlucaScaljeri 是的。你使用最新版本的 Node & npm 吗?
  • 这个答案不是解决方案。一些缺少的模块是其他模块的依赖项。 npm: 2.15.1 也有同样的问题。
  • 自 2017 年起不再需要 --save
【解决方案2】:

我使用的是相同版本的 npm/node。有时,就像 npm “丢失”了一样。我的建议是:

  • 你的节点模块的rm(至少是相关的)
  • npm 缓存清理
  • 多次运行“npm install”,直到解决所有依赖项并且不显示任何消息

【讨论】:

    【解决方案3】:

    似乎 gulp 需要 'karma' 依赖项 (socket.io ,di ,log4js...) 所以你必须运行:

    npm install karma

    所以只要运行这个命令就解决了问题,一切都应该很好,由于某些原因,同样的事情也会发生在 grunt 上。

    【讨论】:

      【解决方案4】:

      我在引导 MEAN 应用程序时遇到了同样的问题,并且无法使用 npm install packageName --save 添加每个缺失的依赖项,所以我遇到了 npm-install-missing,他救了我的命 :)

      安装

      npm install -g npm-install-missing

      用法

      npm-install-missing
      

      【讨论】:

      • 当我尝试这个时它告诉我没有丢失的模块,尽管当我运行 npm list 它加载了丢失和未满足的依赖项。
      • 对我来说,这也说明它已经完成了,但可悲的是什么也没做!
      • 这只是在每个依赖项中通过package.json。我需要安装项目中使用的依赖项,但不知何故忘记安装。
      【解决方案5】:

      要解决缺少的 npm 模块,请运行:

      sudo npm install -g npm-install-missing
      

      【讨论】:

      • 这个答案在 2015 年就已经提供了。如果您同意使用 npm-install-missing 包回答原始发帖人的问题,请给答案竖起大拇指。如果您想说些什么来澄清答案,请在答案下方留下评论,但不要创建新的。
      • 它是8岁的,在最新的节点上不起作用
      【解决方案6】:

      这对我有用。通过在 C:\Program Files\nodejs\node_modules\npm\node_modules\graceful-fs\polyfills.js 中注释 3 行。

      参考 [https://flaviocopes.com/cb-apply-not-a-function/]

      // fs.stat = statFix(fs.stat) # Line: 61
      // fs.fstat = statFix(fs.fstat) # Line: 62
      // fs.lstat = statFix(fs.lstat) # Line: 63
      

      【讨论】:

        【解决方案7】:

        除了其他答案,如果您使用 Angular 并且无法创建新的 Angular 项目并挂起,您可以进入文件夹并打开终端并写入:

        npm -i
        

        也许对其他事情也有用!

        【讨论】:

        • 我认为在 i 之前不需要破折号(-)!!
        【解决方案8】:

        我认为 npm 模块 madge 可以帮助您找到缺失的依赖项。它会遍历您的实际代码并列出其中找到的所有依赖项。然后,您可以为找到的每个模块创建一个npm i

        【讨论】:

          【解决方案9】:

          如果npm-install-missing 对您不起作用,了解丢失的包的名称将帮助您。我所要做的就是首先在 VSCode 中打开我的 package.json 文件,然后根据其他包名称的写入方式将缺失模块的名称粘贴或键入其中(在依赖项下)。 然后我运行 npm install 之后。 当您处理文件但不知何故您没有获得 package.json 文件或其中未列出某些模块时,此方法很有帮助。

          请记住在执行 npm install 后停止并重新启动正在运行的服务器,以反映您的工作。

          【讨论】:

            猜你喜欢
            • 2018-06-18
            • 1970-01-01
            • 2014-10-03
            • 2017-03-26
            • 2015-12-16
            • 1970-01-01
            • 2019-12-20
            • 2016-02-25
            • 2015-02-26
            相关资源
            最近更新 更多