Node.js 日志“不输出”一般不是 Node 本身的问题,而是输出方式、运行环境、日志级别、或者被覆盖/重定向导致的。下面按常见原因逐个排查。
console.log,但你看错地方✅ 检查:
pm2 logs
docker logs 容器名
console.log 被注释 / 没执行到例如:
if (false) {
console.log('xxx')
}
✅ 在代码最前面加:
console.log('start')
async function main() {
throw new Error('xxx')
}
main()
// 没 catch,可能什么都没打印
✅ 加:
process.on('uncaughtException', e => {
console.error('uncaught', e)
})
例如:
logger.level = 'error'
logger.info('xxx') // 不输出
✅ 设置为:
logger.level = 'debug'
console.error('error') // 在 stderr
✅ 看 stderr:
node app.js 2>&1 | cat
node app.js > /dev/null
或:
process.stdout.write = () => {}
-tdocker run node
✅ 改成:
docker run -it node
pm2 delete all
pm2 start app.js
pm2 logs
console.log({a: bigObj})
✅ 用:
console.log(JSON.stringify(obj, null, 2))
process.exit() 太早console.log('a')
process.exit(0)
console.log('b') // 不会执行
console.log('TEST') // 能看见吗?
process.on('uncaughtException', e => console.error(e))
process.on('unhandledRejection', e => console.error(e))
setTimeout(() => {
console.log('timeout')
}, 1000)
如果你愿意,可以把:
发出来,我可以直接帮你定位是哪一类问题。