【发布时间】:2021-04-09 13:06:17
【问题描述】:
好的,所以我已经浏览了 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。
我也在本地检查过,但没有成功。这是构建文件夹中构建的 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 感到震惊。
编辑:
我参考这篇文章将 ES6 JS 部署到 heroku How to deploy ES6 Nodejs & Express to Heroku 提前致谢。
正如答案 Answer 0 所建议的,我将时间增加到 120 秒,但仍然没有加载应用程序。
【问题讨论】:
标签: javascript node.js express heroku