部署express应用程序时出现错误R10(启动超时)



好的,所以我已经查看了So和其他网站关于这个问题的所有答案,但没有解决。我用ES6语法开发了一个小型的express应用程序,所以在将其部署到heroku后,我收到了这个错误。

日志:

2021-04-09T12:14:14.688546+00:00 heroku[web.1]: Starting process with command `npm start`
2021-04-09T12:14:17.094473+00:00 app[web.1]: 
2021-04-09T12:14:17.094495+00:00 app[web.1]: > todo@1.0.0 start /app
2021-04-09T12:14:17.094496+00:00 app[web.1]: > npm run build && node ./build/app.js
2021-04-09T12:14:17.094496+00:00 app[web.1]: 
2021-04-09T12:14:17.415529+00:00 app[web.1]: 
2021-04-09T12:14:17.415540+00:00 app[web.1]: > todo@1.0.0 build /app
2021-04-09T12:14:17.415541+00:00 app[web.1]: > npm run clean && npm run build-babel
2021-04-09T12:14:17.415541+00:00 app[web.1]: 
2021-04-09T12:14:17.774142+00:00 app[web.1]: 
2021-04-09T12:14:17.774147+00:00 app[web.1]: > todo@1.0.0 clean /app
2021-04-09T12:14:17.774148+00:00 app[web.1]: > rm -rf build && mkdir build
2021-04-09T12:14:17.774148+00:00 app[web.1]: 
2021-04-09T12:14:18.129225+00:00 app[web.1]: 
2021-04-09T12:14:18.129247+00:00 app[web.1]: > todo@1.0.0 build-babel /app
2021-04-09T12:14:18.129248+00:00 app[web.1]: > babel -d ./build ./src -s
2021-04-09T12:14:18.129248+00:00 app[web.1]: 
2021-04-09T12:14:19.523820+00:00 app[web.1]: Successfully compiled 10 files with Babel (1213ms).
2021-04-09T12:14:22.100639+00:00 app[web.1]: [INFO] Connected to DB
2021-04-09T12:15:14.832949+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2021-04-09T12:15:14.869178+00:00 heroku[web.1]: Stopping process with SIGKILL
2021-04-09T12:15:14.978950+00:00 heroku[web.1]: Process exited with status 137
2021-04-09T12:15:15.039050+00:00 heroku[web.1]: State changed from starting to crashed

这是Package.json文件中的脚本

"scripts": {
"clean": "rm -rf build && mkdir build",
"build-babel": "babel -d ./build ./src -s",
"build": "npm run clean && npm run build-babel",
"start": "npm run build && node ./build/app.js",
},

在本地运行npm start后,它会在build/文件夹中创建app.js文件。现在根据日志,我可以连接到mongdb,但应用程序没有监听PORT.

我也在当地检查过,但没有效果。这是build文件夹中构建的app.js文件。

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _express = _interopRequireDefault(require("express"));
var _passport = _interopRequireDefault(require("passport"));
var _connectDb = _interopRequireDefault(require("./connectDb"));
var _routes = _interopRequireDefault(require("./constants/routes"));
var _cors = _interopRequireDefault(require("cors"));
var app = (0, _express["default"])();
app.use((0, _cors["default"])()); // Load dotenv file in devlopment
if (process.env.NODE_ENV !== 'production') {
require('dotenv').config();
} // Middlewares

app.use(_express["default"].json());
(0, _connectDb["default"])(); // Initializing passport
require('./routes/authentication/passportConfig')(_passport["default"]); // TODO turn this into ES6 syntax

app.use(_passport["default"].initialize());
app.use(_passport["default"].session());
app.get('/', function (_req, res) {
res.send("hello world");
}); // Routes
app.use('/auth', _routes["default"].AUTHENTICATION);
var _default = app;
exports["default"] = _default;
//# sourceMappingURL=app.js.map

如果我将其添加到build/app.js文件并运行node ./build/app.js

app.listen(process.env.PORT || 5000, () => {
console.log(`Live at ${process.env.PORT || 5000}`);
})

它有效。控制台语句将打印出来。我对如何解决这个问题并将其部署到heroku感到震惊。

编辑:

我把这篇关于部署ES6JS的文章介绍给heroku如何部署ES6Nodejs&特快至赫罗库提前谢谢。

根据答案0的建议,我将时间增加到120秒,但应用程序仍然没有加载。

由于应用程序在60秒内无法绑定到Heroku的端口,您显然收到了R10(引导超时(错误。

尝试使用Heroku的Boot Timeout Tool:来增加引导时间限制

https://tools.heroku.support/limits/boot_timeout

你可以在这个支持页面上阅读更多:

https://help.heroku.com/W5ETWBQB/why-is-my-app-crashing-with-an-r10-error

相关内容

最新更新