在Heroku上运行时找不到模块“ ./mergeConfig”

时间:2019-07-03 21:50:40

标签: node.js heroku npm

我有一个节点应用程序,当通过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上都运行节点v10.16.0和npm v6.9.0,所以我真的不知道是什么原因导致了这个问题,并且对其进行任何搜索都无济于事。

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

编辑:这是我的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"
  }
}

3 个答案:

答案 0 :(得分:0)

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

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

我认为它适用于您的本地环境,因为您已在全球范围内安装了该模块。

答案 1 :(得分:0)

我有同样的问题。 “ ./mergeConfig”是de axios模块中的文件。

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

出于某种原因,heroku对该文件存在问题。 我通过用request替换axios来解决了这个问题。

答案 2 :(得分:0)

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

src:https://github.com/axios/axios/issues/1767#issuecomment-416924946