【问题标题】:Cannot find module './mergeConfig' when running on Heroku在 Heroku 上运行时找不到模块“./mergeConfig”
【发布时间】:2020-03-29 10:27:08
【问题描述】:

我有一个节点应用程序,通过node my_application.js 在我的机器上执行时运行良好。

但是,如果将其推送到 heroku 并通过 heroku run node my_application.js 或使用调度程序执行它,我得到的是这个错误:

internal/modules/cjs/loader.js:638
throw err;
^

Error: Cannot find module './mergeConfig'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:690:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/app/node_modules/axios/lib/core/Axios.js:7:19)
    at Module._compile (internal/modules/cjs/loader.js:776:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)

我在本地和 Heroku 上运行 node v10.16.0 和 npm v6.9.0,所以我真的不知道是什么导致了这个问题,谷歌搜索并没有任何帮助。

关于这个 mergeConfig 模块的任何想法似乎在我的 heroku 环境中缺失,但在我的本地环境中没有?

编辑:这是我的 package.json:

{
  "name": "[REDACTED]",
  "version": "1.0.0",
  "description": "[REDACTED]",
  "author": "",
  "license": "ISC",
  "dependencies": {
    "axios": "^0.19.0",
    "bluebird": "^3.5.3",
    "body-parser": "^1.18.3",
    "dateformat": "^3.0.3",
    "express": "^4.16.4",
    "form-data": "^2.3.3",
    "http-to-curl": "^1.4.2",
    "jest": "^24.8.0",
    "qs": "^6.6.0",
    "querystring": "^0.2.0",
    "redis": "^2.8.0",
    "simple-oauth2": "^2.2.1"
  }
}

【问题讨论】:

  • edit您的问题并添加您的package.json
  • mergeConfig 是否出现在您的package-lock.jsonyarn.lock 中?它是您自己编写的模块,还是来自私有包存储库的模块?您是直接依赖它(如果是,为什么不在您的package.json 中)还是间接依赖?我在 NPM 上找不到(虽然有 merge-config)。

标签: node.js heroku npm


【解决方案1】:

尝试在 package.json 的依赖项中显式添加缺少的模块:

 "dependencies": {
       ...
       "merge-config" :"2.0.0"
       ...
}

我认为它适用于您的本地环境,因为您已全局安装该模块。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。 './mergeConfig' 是 de axios 模块中的一个文件。

    路径:node_modules/axios/core/mergeConfig.js

    由于某种原因,heroku 对这个文件有问题。 我通过用请求替换 axios 来解决它。

    【讨论】:

    • 你能更具体地说明I solved it by replacing axios with request.的意思吗
    • 我在我的代码中为包“request”link重新放置了包“axios”link
    • 我真的不想重写我的所有应用程序来使用另一个 HTTP 请求库而不是 axios,虽然:(
    • 我找到了更好的解决方案,将de axios包降级到0.18.1版本
    【解决方案3】:

    这解决了我的问题NODE_OPTIONS=--max_old_space_size=4096

    源代码:https://github.com/axios/axios/issues/1767#issuecomment-416924946

    【讨论】:

      猜你喜欢
      • 2021-06-13
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      • 2018-02-08
      • 1970-01-01
      • 2014-10-06
      • 2012-04-22
      • 2019-12-12
      相关资源
      最近更新 更多