我将路线重构到一个单独的文件夹中
server.js:
var express = require("express"),
parse = require("body-parser"),
db = require("mysql"),
mailer = require("nodemailer"),
redirectToHTTPS = require("express-http-to-https").redirectToHTTPS,
app = express();
var indexRoutes = require("./routes/index"),
deviceRoutes = require("./routes/devices"),
locationRoutes = require("./routes/locations"),
organizationRoutes = require("./routes/organizations");
app.use(parse.urlencoded({extended: true}));
app.set("view engine", "ejs");
app.use(express.static(__dirname + "/public/"));
app.use(redirectToHTTPS([/localhost:(\d{4})/], [/\/insecure/], 301));
//---------------------------------ROUTING--------------------------------------
app.use("/", indexRoutes);
app.use("/devices", deviceRoutes);
app.use("/locations", locationRoutes);
app.use("/organizations", organizationRoutes);
//-------------------------------SERVER INIT------------------------------------
app.listen(process.env.PORT, process.env.IP, function(){
console.log("Server initiated (port " + process.env.PORT + ")...");
});
index.js(我的索引路由所在的位置):
var express = require("express");
var router = express.Router();
//------------------------------------------------------------------------------
router.get("/", function(req, res){
res.render("home");
});
//------------------------------------------------------------------------------
module.exports = router;
但是
我收到TypeError:
无法读取未定义的属性“ get”
我不知道发生了什么,因为我从事的上一个项目具有完全相同的处理方式,没有任何问题。我正在使用Express 3.21.2。
重要的是,该错误出在所有4个路由文件中,由于它是第一个,所以我恰好在索引文件中得到了错误。
答案 0 :(得分:0)
我相信这是因为您使用的是Express which doesn't include express.Router()
的3.x版本(因此,其在路由文件中的所有后续使用均无效)。我鼓励您升级到当前版本4.x,该版本已得到积极维护。