求助:使用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>终止占用进程
- Windows:执行
4. 后续潜在问题修复(不影响连接,但会导致业务报错)
users.js路由路径错误:router.get("/find:userId"改为router.get("/find/:userId"(缺少斜杠会导致参数无法解析)auth.js控制器SQL语法错误:INSERT INTO users (...) VALUE (?)改为VALUES (?)(单数VALUE不符合SQL语法规范)
测试步骤
- 修复上述错误后重启Node.js服务器
- 在Insomnia中重新发送POST请求到
http://localhost:8900/api/auth/register,确保请求体包含username、email、password、name四个字段 - 若仍报错,检查Insomnia的代理设置,确保未开启全局代理导致无法访问localhost
内容的提问来源于stack exchange,提问作者dude543
相关产品推荐
相关产品推荐

