Skip to content

第13章:Node.js 新手常见问题与避坑指南

13.1 高频错误1:模块导入失败(路径错误、模块未安装)

错误表现

  • 运行时出现 Cannot find module 'xxx' 错误
  • 相对路径导入失败

解决方案

  1. 检查模块是否安装

    bash
    npm list xxx
    # 如果未安装,运行
    npm install xxx
  2. 检查导入路径

    • 相对路径:使用 ./../ 开头
    • 绝对路径:使用 __dirnamepath 模块
  3. 检查文件名大小写

    • Windows 系统文件名大小写不敏感,但 Node.js 模块系统区分大小写
    • 确保导入路径的大小写与实际文件名一致

13.2 高频错误2:异步代码执行顺序错误(回调地狱、await使用不当)

错误表现

  • 代码执行顺序与预期不符
  • 出现 undefinednull
  • 回调函数嵌套过深(回调地狱)

解决方案

  1. 使用 Promise

    javascript
    // 回调方式
    fs.readFile('file.txt', (err, data) => {
      if (err) throw err;
      console.log(data);
    });
    
    // Promise 方式
    const fs = require('fs').promises;
    fs.readFile('file.txt')
      .then(data => console.log(data))
      .catch(err => console.error(err));
  2. 使用 async/await

    javascript
    const fs = require('fs').promises;
    
    async function readFile() {
      try {
        const data = await fs.readFile('file.txt');
        console.log(data);
      } catch (err) {
        console.error(err);
      }
    }
    
    readFile();
  3. 避免回调地狱

    • 使用 Promise 链式调用
    • 使用 async/await
    • 使用 Promise.all 处理并行操作

13.3 高频错误3:端口占用(解决方法:杀死进程、更换端口)

错误表现

  • 启动服务器时出现 EADDRINUSE: address already in use 错误

解决方案

  1. 查找占用端口的进程

    • Windows:
      bash
      netstat -ano | findstr :3000
    • Mac/Linux:
      bash
      lsof -i :3000
  2. 杀死占用端口的进程

    • Windows:
      bash
      taskkill /PID <进程ID> /F
    • Mac/Linux:
      bash
      kill -9 <进程ID>
  3. 更换端口

    javascript
    const port = process.env.PORT || 3001; // 更换为不同的端口
    app.listen(port, () => {
      console.log(`Server running on port ${port}`);
    });

13.4 高频错误4:文件路径错误(相对路径、绝对路径混淆)

错误表现

  • 文件读写操作失败
  • 出现 ENOENT: no such file or directory 错误

解决方案

  1. 使用绝对路径

    javascript
    const path = require('path');
    const filePath = path.join(__dirname, 'data', 'file.txt');
  2. 理解相对路径

    • 相对路径是相对于当前工作目录(process.cwd()),而不是相对于文件所在目录
    • 推荐使用 __dirname 来构建绝对路径
  3. 检查路径分隔符

    • Windows 使用 \
    • Mac/Linux 使用 /
    • 使用 path 模块自动处理路径分隔符

13.5 高频错误5:跨域问题(CORS配置错误)

错误表现

  • 浏览器控制台出现 Access-Control-Allow-Origin 错误
  • 前端无法获取后端API数据

解决方案

  1. 使用 CORS 中间件

    bash
    npm install cors
    javascript
    const cors = require('cors');
    app.use(cors());
  2. 手动设置 CORS 头

    javascript
    app.use((req, res, next) => {
      res.setHeader('Access-Control-Allow-Origin', '*');
      res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
      res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
      next();
    });

13.6 调试技巧:Node.js调试方法(VS Code调试、console打印)

VS Code 调试

  1. 创建调试配置

    • 点击 VS Code 左侧的调试图标
    • 点击 "创建 launch.json 文件"
    • 选择 "Node.js"
  2. 设置断点

    • 在代码行左侧点击设置断点
    • 启动调试模式
  3. 查看变量

    • 在调试面板中查看变量值
    • 使用 "监视" 功能监视特定变量

Console 打印

  1. 基本打印

    javascript
    console.log('Hello World');
  2. 格式化打印

    javascript
    console.log('Name: %s, Age: %d', name, age);
  3. 对象打印

    javascript
    console.log('Object:', obj);
    console.dir(obj, { depth: null }); // 打印完整对象
  4. 错误打印

    javascript
    console.error('Error:', error);
  5. 性能计时

    javascript
    console.time('Task');
    // 执行任务
    console.timeEnd('Task');

© 2026 编程马·菜鸟教程 版权所有