繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM