ExpressJS导出外部文件中的路由不适用于根路径

时间:2017-07-11 18:19:54

标签: javascript node.js express routing

我想在外部文件中导出我的路线。

除了根路线之外的所有东西都在起作用:

localhost / login - > "登录页面"

localhost / - >空

server.js:

// SET UP =============
var express = require("express");
var app = express();
var port = 80;
var bodyParser = require("body-parser");

// CONFIG =============
app.use(express.static(__dirname + "/public"));
app.use(bodyParser.urlencoded({'extended':'true'}));
app.use(bodyParser.json());
app.use(bodyParser.json({ type: 'application/vnd.api+json' }));

// ROUTES =============
var base = require("./routes/base");
app.use("/",base);

// LISTEN =============
app.listen(port);
console.log("Server listening on port " + port);

base.js:

var express = require('express')
var router = express.Router()

//Home
router.get('/', function (req, res) {
  res.send('Home page')
})

//Login
router.get('/login', function (req, res) {
  res.send('Login page')
})

module.exports = router

3 个答案:

答案 0 :(得分:1)

您无需在app.use('/', base)上指定路由,而只需将路由器中间件直接提供给您的快速应用,并让base内的路由器处理请求。

app.use(base)

答案 1 :(得分:1)

嗯,好吧,我发现了我的问题。

我的 ./ public 文件夹中有一个空的 index.html

答案 2 :(得分:0)

您使用/ login路由覆盖根路由,因此只导出/ login路由。如果您想将所有路由保存在一个文件中,我建议您在base.js文件中执行以下操作:

module.exports = function(server){
    server.get('/', function(request, response){
        response.send('Home page.');
    });

    server.get('/login', function(request, response){
        response.send('Login page.');
    });
}

然后在server.js文件中使用以下方法导入路径:

require('./routes/base.js')(app);

这会立即导入路由并在您创建的Express服务器上调用它们的功能:)