You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用Insomnia测试Node.js API时无法连接服务器

解决Insomnia无法连接Node.js API服务器的问题

核心问题排查与修复

1. 路由导入完全错误(最可能导致请求无响应的原因)

你的index.js里重复用同一个变量userRoutes导入三个不同路由文件,后导入的会覆盖之前的,最终只有posts.js的路由被挂载,/api/auth/register这个路径根本不存在:

// 错误写法
import userRoutes from "./routes/auth.js"
import userRoutes from "./routes/users.js"
import userRoutes from "./routes/posts.js"

app.use("/api/auth", userRoutes) // 实际用的是posts.js的路由
app.use("/api/users", userRoutes) // 同上
app.use("/api/posts", userRoutes)

修复: 给每个路由变量起不同的名字:

import authRoutes from "./routes/auth.js"
import userRoutes from "./routes/users.js"
import postRoutes from "./routes/posts.js"

app.use("/api/auth", authRoutes)
app.use("/api/users", userRoutes)
app.use("/api/posts", postRoutes)

2. MySQL连接未主动建立

你的connect.js只创建了连接对象,但没有发起实际连接,数据库操作会失败甚至导致服务器崩溃:

import mysql from "mysql"

export const db = mysql.createConnection({
    host:"localhost",
    user:"root",
    password:"abcabc",
    database: "social"
})

// 新增:主动建立连接并处理连接错误
db.connect((err) => {
  if (err) {
    console.error("数据库连接失败:", err);
    return;
  }
  console.log("已成功连接到MySQL数据库");
})

3. 确认服务器正常启动

  • 启动Node.js服务后,检查控制台是否输出API working!,如果没有,说明代码存在语法错误(比如重复导入会触发语法报错)
  • 检查8900端口是否被占用:
    • Windows:执行netstat -ano | findstr :8900,杀死对应PID的进程
    • macOS/Linux:执行lsof -i :8900,再用kill -9 <PID>终止占用进程

4. 后续潜在问题修复(不影响连接,但会导致业务报错)

  • users.js路由路径错误:router.get("/find:userId"改为router.get("/find/:userId"(缺少斜杠会导致参数无法解析)
  • auth.js控制器SQL语法错误:INSERT INTO users (...) VALUE (?)改为VALUES (?)(单数VALUE不符合SQL语法规范)

测试步骤

  1. 修复上述错误后重启Node.js服务器
  2. 在Insomnia中重新发送POST请求到http://localhost:8900/api/auth/register,确保请求体包含username、email、password、name四个字段
  3. 若仍报错,检查Insomnia的代理设置,确保未开启全局代理导致无法访问localhost

内容的提问来源于stack exchange,提问作者dude543

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 07:35:31