[英]GET URL 500 (Internal Server Error) - Heroku
我的网站出现内部服务器错误
当我在控制台heroku logs -t 中写入时,我得到了这个
2020-11-10T00:22:21.151925+00:00 app[web.1]: TypeError: view.render is not a function
2020-11-10T00:22:21.151942+00:00 app[web.1]: at tryRender (/app/node_modules/express/lib/application.js:640:10)
2020-11-10T00:22:21.151946+00:00 app[web.1]: at Function.render (/app/node_modules/express/lib/application.js:592:3)
2020-11-10T00:22:21.151946+00:00 app[web.1]: at ServerResponse.render (/app/node_modules/express/lib/response.js:1012:7)
2020-11-10T00:22:21.151947+00:00 app[web.1]: at /app/routes/index.js:35:7
2020-11-10T00:22:21.151948+00:00 app[web.1]: at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
2020-11-10T00:22:21.151948+00:00 app[web.1]: at next (/app/node_modules/express/lib/router/route.js:137:13)
2020-11-10T00:22:21.151948+00:00 app[web.1]: at Route.dispatch (/app/node_modules/express/lib/router/route.js:112:3)
2020-11-10T00:22:21.151949+00:00 app[web.1]: at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
2020-11-10T00:22:21.151949+00:00 app[web.1]: at /app/node_modules/express/lib/router/index.js:281:22
2020-11-10T00:22:21.151950+00:00 app[web.1]: at Function.process_params (/app/node_modules/express/lib/router/index.js:335:12)
我的 index.js
const express = require("express");
const fs = require("fs");
const bodyParser = require("body-parser");
const router = express.Router();
const nodemailer = require("nodemailer");
router.use(bodyParser.json());
router.use(bodyParser.urlencoded({ extended: false }));
router.get("/public/products/bags.json", function (req, res) {
res.writeHead(200, {
"Content-type": "application/json",
});
res.end(JSON.stringify(data));
});
router.get("/", function (req, res) {
res.render("constructor", { //<---------THIS --- at /app/routes/index.js:35:7
style: "constructor",
bags: data,
});
});
module.exports = router;
服务器.js
const express = require("express");
const exphbs = require("express-handlebars");
const routes = require("./routes/index");
const PORT = process.env.PORT || 3000;
const app = express();
app.use(express.static("public"));
app.engine("handlebars", exphbs({ defaultLayout: "main" }));
app.set("view engine", "handlebars");
app.use("/", routes);
app.listen(PORT);
当我使用我的网络服务器时,它没问题。 我怎么解决这个问题?
这是因为您的本地环境和 Heroku 环境之间的节点版本不匹配。 您应该在 package.json 中指定节点版本,让 Heroku 知道正确的节点版本。
package.json
{
"name": "one",
"version": "1.0.0",
"description": "",
"main": "server.js",
"dependencies": {
"body-parser": "^1.19.0",
"express": "^4.17.1",
"express-handlebars": "^5.2.0",
"jquery-pjax": "^2.0.1",
"nodemailer": "^6.4.15",
"path": "^0.12.7"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"author": "",
"license": "ISC",
"engines": {
"node": "14.x"
},
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.