当前位置: 首页 > 面试题库 >

如何使用express.js在node.js中捕获渲染错误/缺少模板?

邬友樵
2023-03-14
问题内容

我有这样的代码,可以在没有定义路线的情况下渲染玉器模板。可以把它想成express.static,但是它用URL调用res.render。

app.use(function (req, res, next) {
    try {
        res.render(req.url.substring(1), { title: "No Controller", user: req.session.user });
    } catch (err) {
        console.log(err)
        next();
    }
});

问题在于res.render()不会引发错误。而是呈现错误页面。有没有办法检测丢失的模板或任何渲染错误?


问题答案:

一个更好的方法fs是使用render的callback ,而不是需要另一个回调,而是:

res.render(my_page_im_not_sure_it_exists, {}, function(err, html) {
    if(err) {
        res.redirect('/404'); // File doesn't exist
    } else {
        res.send(html);
    }
});


 类似资料:
  • 我正在从可能被压缩的服务器下载内容,所以我使用了我在不同地方找到的样板: 问题是,如果HTTPS请求因网络错误而失败,我有时会引发以下异常: 该“错误”事件处理程序未捕获异常。那么我如何捕获它,以便能够正确地清理文件并知道如何重试?

  • 问题内容: 我无法在快速工作区中渲染更少的CSS。 这是我当前的配置 (我的css / less文件 位于 “ public / stylo /”中) : 这是我的 main.jade文件 : 这是我的 main.less CSS : 这是我的好 东西 。 很酷的交易。现在: 我通过npm安装的次数较少, 并且从另一篇帖子中听说@imports应该引用而不是。在任何情况下,我已经试过了 组合 开关

  • 在任何地方都找不到关于这个的文章。我基本上希望从程序中捕获“找不到模块”错误,并可以选择要求安装它,但即使使用try/catch语句,我似乎也无法捕获任何错误。这可能吗?我哪儿都没见过。 例如: 我想这可以通过一个独立的.js启动文件来完成,而无需任何第三方的要求,只需使用检查,然后从子进程运行,然后与另一个子进程一起运行。但感觉在单个app.js文件中执行此操作会更容易

  • 在此处输入图像描述我正在使用use效果挂钩来使用获取api,但它不起作用。当只有一个api时,它可以正常工作,但当我使用另一个api使用createData函数中的use效果挂钩获取数据时,它会出错。 我做了一些研究,我认为这是因为react中的组件重新渲染引起的一些问题,我试图搜索修复,但没有找到它,所以我发布它,如果有任何问题,请在评论中问我,我会给出更多的细节。

  • 问题内容: 我刚刚发现Node(已测试:v0.8.23,当前git:v0.11.3-pre)在其Buffer处理中忽略了任何解码错误,以(Unicode REPLACEMENT CHARACTER)静默替换了任何非utf8字符,而不是抛出异常非utf8输入。因此,,和朋友面膜类大对你坏输入错误的。 不会失败但确实应该的示例: 是合法的utf8中可能出现的完全有效的字符(作为sequence ),因

  • 我想用svg画一个模糊的圆,但是用一些更高的stdDeviation值,它会被裁剪。 我尝试了几个属性,比如“fegaussianblur”标签上的“edgemode”,或者“circle”和“filter”标签上的“width=”150%“和”height=“150%”,但没有任何帮助。 有什么想法吗?