gpt4 book ai didi

node.js - 基于 NodeJS、Express 和 Pug 的应用程序的 Pug 错误处理

转载 作者:行者123 更新时间:2023-12-03 08:49:26 27 4
gpt4 key购买 nike

我正在使用 Node.js、Express 和 Pug 创建一个简单的 Web 服务器。

包.json:

{
"name": "testing",
"version": "0.0.7",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"body-parser": "~1.17.1",
"command-line-args": "^4.0.6",
"cookie-parser": "~1.4.3",
"debug": "~2.6.3",
"express": "~4.15.2",
"less-middleware": "~2.2.0",
"merge": "^1.2.0",
"morgan": "~1.8.1",
"pug": "^2.0.0-rc.2",
"request": "^2.81.0",
"serve-favicon": "~2.4.2",
"sprintf-js": "^1.1.1",
"tracer": "^0.8.9"
}
}

使用 start 命令启动服务器:
npm start

当应用程序包含调用不存在的 pug mixin 之类的错误时:
.container
+hossa

错误文本被渲染并显示在客户端浏览器中,如下所示:
/Projects/.../status.pug:2 1| .container > 2| +hossa 3| 4| 5| div.page.container.hidden#status(text="Status") pug_mixins.hossa is not a function

这没关系,但可以改进。

主要问题:除了 500 代码之外,我在日志输出中没有看到任何错误。

问题是:
  • 需要哪些代码、模块和/或启动选项来记录错误,包括服务器端的完整堆栈信息?
  • 我如何管理它以呈现一些更用户友好的消息?
  • 最佳答案

    正如 Aikon Mogwai 评论的那样——我只是忘了添加一个适当的错误处理程序。

    像这样的东西:

    app.use(function(err, req, res, next) {

    // very basic!
    console.error(err.stack);

    // show user some message - for Ajax requests which expects a specific format
    res.send(JSON.stringify({ok: false, message: err.message}));


    // OR

    // more advanced:
    // check error type, context etc. and act accordingly
    // - log message
    // - send appropriaty error page etc.
    // - eventually use next handler
    // - set res.status
    // sth. like this

    if (req.xhr) {
    res.status(500).send({ error: 'Something failed!' });
    } else {
    next(err);
    }
    });

    关于node.js - 基于 NodeJS、Express 和 Pug 的应用程序的 Pug 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45101757/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com