【问题标题】:error: Cannot find module '/app/app,js' heroku错误:找不到模块 '/app/app,js' heroku
【发布时间】:2022-01-06 02:18:50
【问题描述】:

我的网络在我的本地机器上运行良好,但在 Heroku 中我部署了我的应用程序,但没有任何工作,以及何时: $ heroku logs --tail

State changed from crashed to starting
Starting process with command `node app.js`
internal/modules/cjs/loader.js:883
throw err;
^

Error: Cannot find module 'express'
Require stack:
- /app/app.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
at Function.Module._load (internal/modules/cjs/loader.js:725:27)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (/app/app.js:1:17)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '/app/app.js' ]
}

目录结构:

-app
 -css
 -files
 -js
 -logo
 -views
 -index.html
-app.js
-composer.json
-package-lock.json
-package.json
-Procfile

过程文件:

web: node app.js

package.json:

{
  "name": "app",
  "version": "1.0.0",
  "engines": {
    "node": "14.15.3"
  },
  "private": "true",
  "main": "app.js",
  "scripts": {
    "start": "node app.js",
    "dev": "nodemon app.js"
  },
  "keywords": [],
  "author": "me",
  "repository": "appRep",
  "license": "ISC",
  "devDependencies": {
    "chokidar": "^3.5.2",
    "express": "^4.17.2",
    "fs": "0.0.1-security",
    "nodemailer": "^6.7.2",
    "nodemon": "^2.0.15",
    "path": "^0.12.7"
  }
}

.env:(甚至在 .env 文件之前一切都是一样的)

PORT = 8081

你们有什么想法吗? 提前谢谢你!

【问题讨论】:

  • 您是否尝试将app.js 放入app 文件夹中?
  • 是的,我做到了,这根本不起作用,而且我的本地服务器无法找到我的文件

标签: javascript node.js heroku package.json


【解决方案1】:

您的express 包在package.json 中的devDependencies 中列出,请尝试将其移至dependencies,就像这样

"dependencies": {
  "express": "^4.17.2"
}

devDependencies 应该只列出对部署在生产环境 (Heroku) 的应用程序来说不是必需的包。可能需要将更多包移动到dependencies,而不仅仅是express

【讨论】:

  • 这成功了!!!!!!!!!!!!!!!!!!!!!!!!!!!谢谢你好先生,你能解释一下为什么快递应该在dependencies而不是devDependencies吗?我真的很好奇...
  • @Liemannenloop devDependencies 是只需要在开发过程中使用的包,例如 nodemon,因此 Heroku 不需要在生产构建中安装它;在这里阅读更多stackoverflow.com/questions/18875674/…
【解决方案2】:

确保在 Heroku 上安装了 express。 您应该将express 添加到package.json 文件中的dependencies 对象

【讨论】:

  • 您能解释一下为什么会这样吗?我希望我能支持你的评论,但我没有什么名声哈哈,但正如前几位先生所说,这是 100% 正确的答案。
  • 没问题 :),祝你好运。
猜你喜欢
  • 2016-12-25
  • 2021-08-17
  • 2018-11-07
  • 1970-01-01
  • 2021-02-11
  • 2021-07-13
  • 2019-08-17
  • 2018-12-30
  • 1970-01-01
相关资源
最近更新 更多