GET URL 500内部服务器错误-Heroku

问题描述

我的网站上出现内部服务器错误

当我在控制台中写 heroku日志-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("/",res) {
  res.render("constructor",{ //<---------THIS --- at /app/routes/index.js:35:7
    style: "constructor",bags: data,});
});
module.exports = router;

server.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知道正确的节点版本。

Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'junitDisplayName' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public or not valid?

package.json