【问题标题】:Heroku deploy error : Cannot find module 'Express'Heroku 部署错误:找不到模块“Express”
【发布时间】:2021-03-17 06:34:54
【问题描述】:

我正在尝试在 heroku 上部署一个 Node.js 应用程序。但是每当我尝试部署它时都会抛出错误 - 找不到模块“Express”。尽管 package.json 文件中已经提到过,但它仍然抛出错误。我已经按照 Heroku Node.js 文档中提到的每一步,到处查找问题并做了所有需要的事情。这是我的 package.json 文件 -

 {
  "name": "kimaya_soft",
  "version": "1.0.0",
  "description": "Application for school",
  "main": "index.js",
  "scripts": {
    "start": "set NODE_ENV=production&& node index.js"
  },
  "author": "Anjali Ahlawat",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1",
    "bcrypt": "^5.0.0",
    "compression": "^1.7.4",
    "config": "^3.3.1",
    "helmet": "^4.2.0",
    "joi": "^14.3.1",
    "jsonwebtoken": "^8.5.1",
    "jspdf": "^2.1.1",
    "jspdf-autotable": "^3.5.13",
    "lodash": "^4.17.20",
    "mongoose": "^5.9.7",
    "nodemailer": "^6.4.16"
  },
  "devDependencies": {},
  "engines": {
    "node": "10.x"
  }
}

部署日志-

    2020-12-05T16:14:35.338290+00:00 app[web.1]: WARNING: NODE_ENV value of 'production' did not match any deployment config file names.
2020-12-05T16:14:35.339736+00:00 app[web.1]: WARNING: See https://github.com/lorenwest/node-config/wiki/Strict-Mode
2020-12-05T16:14:35.347204+00:00 app[web.1]: internal/modules/cjs/loader.js:638
2020-12-05T16:14:35.347205+00:00 app[web.1]: throw err;
2020-12-05T16:14:35.347205+00:00 app[web.1]: ^
2020-12-05T16:14:35.347205+00:00 app[web.1]:
2020-12-05T16:14:35.347206+00:00 app[web.1]: Error: Cannot find module 'Express'
2020-12-05T16:14:35.347206+00:00 app[web.1]: at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
2020-12-05T16:14:35.347207+00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:562:25)
2020-12-05T16:14:35.347207+00:00 app[web.1]: at Module.require (internal/modules/cjs/loader.js:692:17)
2020-12-05T16:14:35.347208+00:00 app[web.1]: at require (internal/modules/cjs/helpers.js:25:18)
2020-12-05T16:14:35.347208+00:00 app[web.1]: at Object.<anonymous> (/app/startup/routes.js:1:17)
2020-12-05T16:14:35.347209+00:00 app[web.1]: at Module._compile (internal/modules/cjs/loader.js:778:30)
2020-12-05T16:14:35.347209+00:00 app[web.1]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
2020-12-05T16:14:35.347209+00:00 app[web.1]: at Module.load (internal/modules/cjs/loader.js:653:32)
2020-12-05T16:14:35.347210+00:00 app[web.1]: at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
2020-12-05T16:14:35.347210+00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:585:3)
2020-12-05T16:14:35.347210+00:00 app[web.1]: at Module.require (internal/modules/cjs/loader.js:692:17)
2020-12-05T16:14:35.347211+00:00 app[web.1]: at require (internal/modules/cjs/helpers.js:25:18)
2020-12-05T16:14:35.347211+00:00 app[web.1]: at Object.<anonymous> (/app/index.js:5:1)
2020-12-05T16:14:35.347211+00:00 app[web.1]: at Module._compile (internal/modules/cjs/loader.js:778:30)
2020-12-05T16:14:35.347212+00:00 app[web.1]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
2020-12-05T16:14:35.347212+00:00 app[web.1]: at Module.load (internal/modules/cjs/loader.js:653:32)
2020-12-05T16:14:35.406916+00:00 heroku[web.1]: Process exited with status 1
2020-12-05T16:14:35.479240+00:00 heroku[web.1]: State changed from starting to crashed
2020-12-05T16:17:49.304494+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=kimaya-school-app.herokuapp.com request_id=3acd680f-946a-4c2a-82ef-d20c1ce1d3cc fwd="106.215.0.191" dyno= connect= service= status=503 bytes= protocol=https
2020-12-05T16:17:49.834239+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=kimaya-school-app.herokuapp.com request_id=2beb12ac-d1df-4398-a9f0-c8820bf05284 fwd="106.215.0.191" dyno= connect= service= status=503 bytes= protocol=https

文件结构-

->classes
->config
    ->default.json
->functions
->kimaya-school-app
->middleware
->modals
->node_modules
->routes
->startup
    ->db.js
    ->prod.js
    ->routes.js
->.gitignore
->index.js
->package-lock.json
->package.json
->Procfile
->sendMail.js

【问题讨论】:

  • 您是否 100% 确定在您尝试部署的代码的存储库根目录中包含 this package.json?而且你已经推送到 Heroku 的 mainmaster 分支,而不是另一个名称的分支?当您的应用程序部署时,您是否看到正在安装 Express?
  • 是的,包包含在正确的目录中,我也推送了主分支。但是我看不到 Express 正在安装,尽管我已将它添加到 package.json 文件中。
  • 请向我们展示您的文件结构和部署日志。
  • 我已经添加了部署日志和文件结构。希望这能帮助您理解问题。

标签: node.js express heroku deployment


【解决方案1】:

您的 package.json 对我来说看起来不错,但引起我注意的部分是日志中的“Express”部分。您的代码中是否有任何部分像这样导入快递?

var express = require('Express'),

如果是这样,您应该只使用小写字母来导入它。

【讨论】:

  • 是的德力顿。谢谢你。我确实浏览了我导入 express 的所有文件,结果发现我在其中一个文件中导入了“Express”。
猜你喜欢
  • 2015-08-31
  • 2019-01-27
  • 2014-03-22
  • 2016-12-25
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 2017-06-07
相关资源
最近更新 更多