Nodejs在生产模式下运行时如何调试错误?

时间:2020-01-29 13:26:42

标签: node.js

这是错误:

/home/api/.pm2/logs/api-error.log last 15 lines:
0|api      |     at s (/home/api/main/dist/app.js:1:120558)
0|api      |     at /home/api/main/dist/app.js:1:120617
0|api      |     at new Promise (<anonymous>)
0|api      |     at /home/api/main/dist/app.js:1:120499
0|api      |     at /home/api/main/dist/app.js:1:123542
0|api      |     at /home/api/main/dist/node_modules/mongojs/lib/cursor.js:73:24
0|api      |     at AsyncResource.runInAsyncScope (async_hooks.js:188:21)
0|api      |     at runInAsyncScope (/home/api/main/dist/node_modules/mongojs/lib/cursor.js:195:16)

我这里没有堆栈跟踪,可能是因为它使用针对生产的webpack构建。

我如何才能看到实际发生的情况并享受生产环境,从而节省了构建空间? 我应该为此添加一个源地图吗? 这里的任何提示都很棒

1 个答案:

答案 0 :(得分:0)

我个人喜欢使用名为node-file-logger的软件包,该软件包的设置非常简单https://www.npmjs.com/package/node-file-logger

我通常有一个日志文件,其中记录了方法名称,方法路径和错误的错误,如下所示

00:14:25.686 | Error | 'read ECONNRESET' | Service: services->global->forgotPassword | Method: requestOtp | 

这是我的代码

router.get('/getFieldAgents', verifyTokenUser, async (req, res) => {
    try {
        your code
    } catch (e) {
        log.Error(e.message, 'services->adminWebUser->admin->users->fieldAgent', 'getFieldAgents');
        return res.status(500).send({ 'status': false, 'login': true, 'message': 'Error getting Field Agents List' });
    }
});

因此,无论何时捕获它,它都会创建一个带有当前日期的日志并将错误记录到其中

my logs folder