我正在尝试在 Node.js 和 Express 中创建路由模块,但我不明白我做错了什么。
错误是无法获取/en/first
重点是有很多像 en 这样的文件夹,每个文件夹都有它的路由。 在index.js中将它们组合在一起并从app.js中调用它。
我的文件结构:
public
-js
-css
views
-index.js
-en
--about.html
--en.js
--home.html
app.js
我的 en.js 文件
var express = require('express')
, router = express.Router()
//en page1
router.get('/about1', function(req, res) {
res.render('about1')
})
//en page2
router.get('/first', function(req, res) {
res.render('first')
})
module.exports = router
/views/index.js
var express = require('express')
var router = express.Router()
router.use('./en', require('./en/'))
router.use('./fr', require('./fr/'))
module.exports = router
app.js
var express = require("express");
var app = express();
var path = require('path');
var router = express.Router();
app.use(router);
app.engine('ejs', require('ejs').__express)
app.set('view engine', 'ejs')
app.use(express.static(path.join(__dirname, 'public')));
app.use(require('./views'))
app.listen(3000,function(){
console.log("Live at Port 3000");
});
还有一个选项可以使用数组而不是像 en.js 文件中那样使用路由?
最佳答案
应该是
router.use('/en', require('./en/en'))
router.use('/fr', require('./fr/fr'))
route 不应有任何点。
编辑
关于你的第二个问题,是的,你可以使用数组:
const routes = ['about1', 'first']; // array of routes
routes.forEach(route => {
router.get('/' + route, function (req, res) {
res.render(route)
});
});
关于javascript - Node.js 中的路由模块出现 `Cannot GET/en/first` 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45148562/