分析 Node.js 日志报错,一般可以按照下面这套思路来,从看现象 → 定位错误 → 复现/验证 → 修复一步步来。
Node.js 报错通常分几类:
TypeError: Cannot read property 'x' of undefined
at app.get (/app/server.js:23:15)
重点看:
TypeError / ReferenceError / RangeErrorUnhandledPromiseRejectionWarning: Error: timeout
说明:
EADDRINUSE: address already in use :::3000
Error: connect ECONNREFUSED 127.0.0.1:6379
通常是:
at /project/src/user.js:45:12
直接打开对应文件看这一行。
node_modules → 大概率是用法不对| 报错 | 常见原因 |
|---|---|
Cannot read property of undefined |
对象未初始化 / 接口返回结构变了 |
ECONNREFUSED |
服务没起 / 地址写错 |
EADDRINUSE |
端口被占用 |
Cannot find module |
没装依赖 / 路径错 |
UnhandledPromiseRejection |
async 没 try/catch |
SyntaxError |
语法写错 / Node 版本太低 |
DEBUG=* node app.js
或
console.log(JSON.stringify(data))
process.on('unhandledRejection', e => {
console.error('未捕获Promise错误', e)
})
pinowinstonlog4js示例:
logger.error('数据库查询失败', { err, userId })
报错:
TypeError: user.name is not a function
at getUser (/src/user.js:12:10)
分析:
user.name 被当成函数调用如果你愿意,可以直接:
我可以帮你逐行分析并给修复方案。