温馨提示×

nodejs日志报错怎么解决

小樊
40
2026-09-11 11:56:52
栏目: 编程语言

要解决 Node.js 日志报错,不能一概而论,关键是看错误日志内容 + 定位上下文。下面给你一套通用排查思路和常见错误对照表,基本能覆盖 90% 的情况。


一、先看日志里最重要的 3 类信息

  1. 错误类型(Error Type)
    • Error: Cannot find module 'xxx'
    • TypeError: xxx is not a function
    • ECONNREFUSED、ETIMEDOUT
    • SyntaxError: Unexpected token
  2. 错误堆栈(stack)
    • 看最后一行你自己的代码文件路径和行号
  3. 触发时机
    • 启动时报错(配置/依赖问题)
    • 请求时报错(业务逻辑问题)

二、常见 Node.js 报错 & 解决办法

1️⃣ Cannot find module ‘xxx’

原因

  • 没装依赖
  • 路径写错
  • node_modules 损坏

解决

npm install
# 或
yarn install

确认:

require('./utils/xxx') // 注意相对路径

2️⃣ TypeError: xxx is not a function / undefined

原因

  • 模块导出方式不一致
  • 异步没 await
  • 对象未初始化

示例

const fs = require('fs')
fs.readFileSync() // 拼写或用法错误

解决

  • 检查 module.exports / export default
  • 打印变量:console.log(xxx)

3️⃣ ECONNREFUSED / ETIMEDOUT

原因

  • 数据库没启动
  • 端口错了
  • 服务地址写错

解决

telnet localhost 3306

确认:

DB_HOST=127.0.0.1
DB_PORT=3306

4️⃣ SyntaxError: Unexpected token

原因

  • 用了 ESModule 但 Node 版本低
  • JSON 写错
  • 文件编码问题

解决

  • 使用 .mjs 或 "type": "module"
  • JSON 校验:
node -e "JSON.parse(require('fs').readFileSync('a.json'))"

5️⃣ Port already in use

Error: listen EADDRINUSE :::3000

解决

lsof -i:3000
kill -9 <pid>

6️⃣ 内存溢出

FATAL ERROR: Ineffective mark-compacts

解决

node --max-old-space-size=4096 app.js

三、通用排查步骤(强烈建议)

  1. 精简复现
    • 最小代码能否复现
  2. 加日志
    console.log('step1', data)
    
  3. 看官方文档
  4. 搜错误关键字 + Node 版本

四、你可以直接把日志发我

如果你愿意,直接贴:

  • 完整报错信息
  • 相关代码
  • Node / npm 版本

我可以逐行帮你分析并给出修改方案。

0 踩