【问题标题】:Node JS Heroku Build Error - 'MODULE_NOT_FOUND'节点 JS Heroku 构建错误 - 'MODULE_NOT_FOUND'
【发布时间】:2022-03-23 09:33:27
【问题描述】:

我没有对我的构建进行任何更改(所有相同的依赖项),但是当我推送到我的暂存环境时,它突然崩溃了。

起初我得到了这个 -

2022-02-10T03:42:49.245470+00:00 app[web.1]: > node server.js
2022-02-10T03:42:49.245471+00:00 app[web.1]:
2022-02-10T03:42:49.311176+00:00 app[web.1]: node:internal/modules/cjs/loader:936
2022-02-10T03:42:49.311177+00:00 app[web.1]: throw err;
2022-02-10T03:42:49.311177+00:00 app[web.1]: ^
2022-02-10T03:42:49.311178+00:00 app[web.1]:
2022-02-10T03:42:49.311181+00:00 app[web.1]: Error: Cannot find module './internal/streams/buffer_list'
2022-02-10T03:42:49.311181+00:00 app[web.1]: Require stack:
2022-02-10T03:42:49.311182+00:00 app[web.1]: - /app/node_modules/readable-stream/lib/_stream_readable.js
2022-02-10T03:42:49.311182+00:00 app[web.1]: - /app/node_modules/readable-stream/readable.js
2022-02-10T03:42:49.311182+00:00 app[web.1]: - /app/node_modules/newrelic/lib/util/logger.js
2022-02-10T03:42:49.311182+00:00 app[web.1]: - /app/node_modules/newrelic/lib/logger.js
2022-02-10T03:42:49.311183+00:00 app[web.1]: - /app/node_modules/newrelic/index.js
2022-02-10T03:42:49.311183+00:00 app[web.1]: - /app/server.js
2022-02-10T03:42:49.311186+00:00 app[web.1]: at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
2022-02-10T03:42:49.311190+00:00 app[web.1]: at Function.Module._load (node:internal/modules/cjs/loader:778:27)
2022-02-10T03:42:49.311190+00:00 app[web.1]: at Module.require (node:internal/modules/cjs/loader:1005:19)
2022-02-10T03:42:49.311190+00:00 app[web.1]: at require (node:internal/modules/cjs/helpers:102:18)
2022-02-10T03:42:49.311190+00:00 app[web.1]: at Object.<anonymous> (/app/node_modules/readable-stream/lib/_stream_readable.js:72:18)       
2022-02-10T03:42:49.311191+00:00 app[web.1]: at Module._compile (node:internal/modules/cjs/loader:1103:14)
2022-02-10T03:42:49.311191+00:00 app[web.1]: at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
2022-02-10T03:42:49.311191+00:00 app[web.1]: at Module.load (node:internal/modules/cjs/loader:981:32)
2022-02-10T03:42:49.311191+00:00 app[web.1]: at Function.Module._load (node:internal/modules/cjs/loader:822:12)
2022-02-10T03:42:49.311192+00:00 app[web.1]: at Module.require (node:internal/modules/cjs/loader:1005:19) {
2022-02-10T03:42:49.311192+00:00 app[web.1]: code: 'MODULE_NOT_FOUND',
2022-02-10T03:42:49.311192+00:00 app[web.1]: requireStack: [
2022-02-10T03:42:49.311192+00:00 app[web.1]: '/app/node_modules/readable-stream/lib/_stream_readable.js',
2022-02-10T03:42:49.311193+00:00 app[web.1]: '/app/node_modules/readable-stream/readable.js',
2022-02-10T03:42:49.311193+00:00 app[web.1]: '/app/node_modules/newrelic/lib/util/logger.js',
2022-02-10T03:42:49.311193+00:00 app[web.1]: '/app/node_modules/newrelic/lib/logger.js',
2022-02-10T03:42:49.311194+00:00 app[web.1]: '/app/node_modules/newrelic/index.js',
2022-02-10T03:42:49.311194+00:00 app[web.1]: '/app/server.js'
2022-02-10T03:42:49.311194+00:00 app[web.1]: ]
2022-02-10T03:42:49.311194+00:00 app[web.1]: }

所以我认为 Heroku 可能正在打击 newrelic 或其他什么,所以我卸载了它,然后现在我得到了 -

2022-02-10T04:17:31.000789+00:00 app[web.1]: > node server.js
2022-02-10T04:17:31.000789+00:00 app[web.1]:
2022-02-10T04:17:31.222303+00:00 app[web.1]: node:internal/modules/cjs/loader:936
2022-02-10T04:17:31.222304+00:00 app[web.1]: throw err;
2022-02-10T04:17:31.222305+00:00 app[web.1]: ^
2022-02-10T04:17:31.222305+00:00 app[web.1]:
2022-02-10T04:17:31.222306+00:00 app[web.1]: Error: Cannot find module '../../helpers/getConstructorName'
2022-02-10T04:17:31.222309+00:00 app[web.1]: Require stack:
2022-02-10T04:17:31.222310+00:00 app[web.1]: - /app/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js
2022-02-10T04:17:31.222310+00:00 app[web.1]: - /app/node_modules/mongoose/lib/drivers/node-mongodb-native/index.js
2022-02-10T04:17:31.222310+00:00 app[web.1]: - /app/node_modules/mongoose/lib/index.js
2022-02-10T04:17:31.222310+00:00 app[web.1]: - /app/node_modules/mongoose/index.js
2022-02-10T04:17:31.222311+00:00 app[web.1]: - /app/server.js
2022-02-10T04:17:31.222311+00:00 app[web.1]: at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
2022-02-10T04:17:31.222312+00:00 app[web.1]: at Function.Module._load (node:internal/modules/cjs/loader:778:27)
2022-02-10T04:17:31.222312+00:00 app[web.1]: at Module.require (node:internal/modules/cjs/loader:1005:19)
2022-02-10T04:17:31.222312+00:00 app[web.1]: at require (node:internal/modules/cjs/helpers:102:18)
2022-02-10T04:17:31.222326+00:00 app[web.1]: at Object.<anonymous> (/app/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:12:28)
2022-02-10T04:17:31.222326+00:00 app[web.1]: at Module._compile (node:internal/modules/cjs/loader:1103:14)
2022-02-10T04:17:31.222326+00:00 app[web.1]: at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
2022-02-10T04:17:31.222326+00:00 app[web.1]: at Module.load (node:internal/modules/cjs/loader:981:32)
2022-02-10T04:17:31.222327+00:00 app[web.1]: at Function.Module._load (node:internal/modules/cjs/loader:822:12)
2022-02-10T04:17:31.222327+00:00 app[web.1]: at Module.require (node:internal/modules/cjs/loader:1005:19) {
2022-02-10T04:17:31.222327+00:00 app[web.1]: code: 'MODULE_NOT_FOUND',
2022-02-10T04:17:31.222328+00:00 app[web.1]: requireStack: [
2022-02-10T04:17:31.222328+00:00 app[web.1]: '/app/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js',
2022-02-10T04:17:31.222328+00:00 app[web.1]: '/app/node_modules/mongoose/lib/drivers/node-mongodb-native/index.js',
2022-02-10T04:17:31.222329+00:00 app[web.1]: '/app/node_modules/mongoose/lib/index.js',
2022-02-10T04:17:31.222329+00:00 app[web.1]: '/app/node_modules/mongoose/index.js',
2022-02-10T04:17:31.222329+00:00 app[web.1]: '/app/server.js'
2022-02-10T04:17:31.222330+00:00 app[web.1]: ]
2022-02-10T04:17:31.222330+00:00 app[web.1]: }

我尝试清理 npm 缓存,删除 node_modules 文件夹,然后 npm install 出现两个错误,但它们仍然存在。当我在命令行上使用 npm start 时,它也启动没有问题,所以 Heroku 有什么问题吗?关于我还应该尝试什么的任何建议?会不会是节点版本?我不是 100% 的,但我觉得在构建之前我会注意到 Node 14.x,现在它是 16.x。

还有,package.json -

{
  "name": "CSQ",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "devStart": "nodemon server.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@sendgrid/mail": "^7.4.6",
    "@slack/events-api": "^3.0.1",
    "@slack/web-api": "^6.5.1",
    "base-64": "^1.0.0",
    "base64-stream": "^1.0.0",
    "concat-stream": "^2.0.0",
    "excel4node": "^1.7.2",
    "express": "^4.17.1",
    "form-data": "^4.0.0",
    "googleapis": "^89.0.0",
    "https": "^1.0.0",
    "intuit-oauth": "^4.0.0",
    "mailgun-js": "^0.22.0",
    "mongodb": "^3.6.2",
    "mongoose": "^6.0.12",
    "node-fetch": "^2.6.1",
    "node-geocoder": "^3.27.0",
    "node-quickbooks": "^2.0.39",
    "pdf-forms": "^0.1.1",
    "pdf-lib": "^1.17.0",
    "pdfform.js": "^1.0.14",
    "plotly": "^1.0.6",
    "popsicle": "^10.0.0",
    "uuid": "^8.3.2",
    "xmlhttprequest": "^1.8.0"
  },
  "devDependencies": {
    "dotenv": "^10.0.0",
    "nodemon": "^2.0.12"
  }
}

【问题讨论】:

  • (a) “删除 node_modules 文件夹”是什么意思?你只是在本地删除它吗?该文件夹是否已提交到您的存储库? (b) 请出示您的package.json
  • @Chris 感谢您的关注,更新了带有 package.json 的帖子。是的,在本地删除;没有没有提交,因为它在 .gitignore 中。好点,我必须弄清楚如何为heroku应用程序做到这一点;我刚刚删除了该应用程序,并在 Heroku 上创建了一个全新的应用程序。
  • 明确一点:您的node_modules/ 应该被提交。很好,你忽略了它。
  • 谢谢@Chris 我尝试按照教程进行操作 :) 所以你认为它可能是节点版本或其他什么?
  • 我在您的package.json 中没有看到构建脚本或启动脚本。你有Procfile吗?

标签: node.js heroku


【解决方案1】:

修复来自 Heroku 文章https://devcenter.heroku.com/articles/troubleshooting-node-deploys

这部分-

Don’t check in generated directories
The app’s node_modules directory is generated at build time from the dependencies listed in package.json and the lockfile. Therefore, node_modules (and other generated directories like bower_components) shouldn’t be included in source control. Check with the following:

git ls-files | grep node_modules
If there are results, then instruct git to stop tracking node_modules:

echo "node_modules" >> .gitignore
git rm -r --cached node_modules
git commit -am 'untracked node_modules'

做到了。我真的不明白为什么当 node_modules 在我的 gitignore 中并且当我已经将这个项目运行了将近一年而没有遇到这个问题时会这样做,但确实如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-15
    • 2023-03-10
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2018-09-03
    • 2014-10-05
    • 2017-11-21
    相关资源
    最近更新 更多