【问题标题】:How can I set express module about router?如何设置关于路由器的快递模块?
【发布时间】:2018-01-22 02:22:32
【问题描述】:

目录

/config
  -routes.js
/public
  /views
    -index.pug
    /home
      -home.pug
-app.js

app.js

const express = require('express'),
      app     = express();

app.use(express.static(path.join(__dirname, 'public')));
app.set('views', path.join(__dirname, 'public/views')));
app.set('view engine', 'pug');

require(__dirname + '/config/routes.js')(app);

app.listen(port);

routes.js

module.exports = function (app) {
  const express = require('express'),
        router  = express.Router(),
        dir     = app.get('views');

  app.use('/', router);

  router.get('/', (req, res) => {
    res.render('index');
  });

  router.get('/home', (req, res) => {
    res.render('/home/home');
  });
};

当我尝试访问 localhost:port/home 时浏览器返回错误消息

错误:无法在视图目录“C:\app\public\views”中查找视图“/home/home”

下一段代码可以访问url。

router.get('/home', (req, res) => {
  res.render(dir + '/home/home');
});

如何设置我的快递? 我不想使用 dir 变量,我只想使用 /home/home。

【问题讨论】:

  • 是否有其他路线无法到达,还是只有这条路线?

标签: javascript node.js http express router


【解决方案1】:

问题在于以下代码

router.get('/home', (req, res) => {
     res.render(dir + '/home/home');
});

您不必在 res.render(); 中指定 dir 并且开头的 / 正斜杠应该是删除。既然您已经告诉 Expressjs 在 views 文件夹 app.set('views', path.join(__dirname, 'public/views'))); 中查找视图文件,请将其更改为 res.render('home/home'); 现在它应该可以工作了。

【讨论】:

  • 是的,但是这一行说明了视图文件将存在的位置app.set('views', path.join(__dirname, 'public/views')));,因此 express 将在视图文件夹中查找它。
  • 感谢您的回答。有用。只需将“/home/home”更改为“home/home”即可。我明白我的错。
  • 是的,有一个正斜杠是一个不同的含义@ofleaf。干杯
猜你喜欢
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
  • 1970-01-01
  • 2018-01-28
  • 2020-08-02
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
相关资源
最近更新 更多