【问题标题】:res.redirect not working when using no template不使用模板时 res.redirect 不起作用
【发布时间】:2021-05-04 23:10:06
【问题描述】:

我正在使用带有 --no-view 标志的 express 生成器制作一个项目,当我尝试将响应重定向到网站时(例如:www.google.com)它不起作用(下面的代码):

router.get('/', function(req, res, next) {
res.redirect('https://www.google.com')
});

上面的代码实际上渲染了 index.html(默认),所以这次我尝试使用像 pug 这样的模板引擎重现相同的问题,但这次重定向成功了。

我的问题是,为什么在不使用模板引擎时,无论我在里面放什么代码,/ 路由总是呈现 index.html?

【问题讨论】:

  • 我的猜测是一些中间件,脚本正在捕获/ 路由。
  • 感谢@ChrisG 的回复,实际上这很奇怪,因为我在创建项目后只更改了这一行``` res.redirect('google.com') ```,所以这是默认行为,当使用 --no-view 标志时 / 路由不会响应代码中的任何更改,只会呈现这个 index.html 文件。

标签: javascript node.js express pug


【解决方案1】:

index.html 文件由以下行提供,因为该项目是在没有视图的情况下创建的(因此,app.js 将没有与设置视图引擎相关的代码)。

app.use(express.static(path.join(__dirname, "public")));

根据documentation,默认情况下将直接提供指定的index文件。您可以通过将index 设置为false 来禁用它,如下所示。

app.use(express.static(path.join(__dirname, "public"), { index: false }));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2018-04-04
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多