【发布时间】: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 的main或master分支,而不是另一个名称的分支?当您的应用程序部署时,您是否看到正在安装 Express? -
是的,包包含在正确的目录中,我也推送了主分支。但是我看不到 Express 正在安装,尽管我已将它添加到 package.json 文件中。
-
请向我们展示您的文件结构和部署日志。
-
我已经添加了部署日志和文件结构。希望这能帮助您理解问题。
标签: node.js express heroku deployment