javascript - Node.js 中的路由模块出现 `Cannot GET/en/first` 错误

标签 javascript node.js express module routes

我正在尝试在 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/

相关文章:

javascript - 单页应用程序中模板检索的困惑以及与典型文件检索的区别

javascript - 如何重定向到 node.js 中的另一个页面

express - Jade : How to include a javascript file

JavaScript 加入多个数组混淆?

node.js - 覆盖 Node 中的 require() 行为

javascript - ajax 成功中的 Ajax 调用不起作用

node.js - 使用 passport-jwt 授权 jwt token 时获得 401 未授权状态

node.js - Mongoose 中子文档的总和

javascript - CKEditor 无法显示我国的特殊字符 Æ Ø Å

Javascript:addEventListener 没有考虑更新的 DOM?