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

已关联所有必要依赖的Node.js+Express项目出现Cannot GET /错误的原因咨询

问题分析与解决方案

让我来帮你排查这个「Cannot GET /」的问题,主要有几个核心问题需要修正:

1. 根路径/未配置任何路由处理

你当前的代码里,只给用户相关路径配置了路由,但完全没有处理根路径/的请求。当你访问服务器根地址时,Express找不到对应的路由处理器,自然会返回Cannot GET /的404错误。

解决方法:

如果需要根路径返回内容,可以在index.js里添加一个根路由:

app.get("/", (req, res) => {
  res.send("服务器运行正常!");
  // 也可以返回JSON格式:res.json({ message: "Server is up and running" });
});

2. 路由挂载路径格式错误

在index.js里,你写的路由挂载代码是:

app.use("./user", userrouter);

这里的路径参数不符合Express的规范——路由挂载应该使用绝对路径格式(以/开头),而不是相对路径./user。这个错误不仅会导致根路径问题,连你的/user路由也无法正常被访问到。

解决方法:

把挂载路径改成标准的绝对路径:

app.use("/user", userrouter);

3. 额外的前置修复(避免后续踩坑)

你的routes/user.js里用了Users.fetchAll(),但Sequelize中获取所有数据的正确方法是findAll(),不是fetchAll(),这个会导致你访问/user时出现数据库查询错误,建议提前修正:

// 替换原有的fetchAll()
const noOfUsers = await Users.findAll();

修正后的index.js核心代码示例

const express = require("express");
const app = express();
const cors = require("cors");
const db = require("./models");

app.use(express.json());
app.use(cors());

// 添加根路径路由处理
app.get("/", (req, res) => {
  res.send("Hello from root path!");
});

// 修正路由挂载路径
const userrouter = require("./routes/user");
app.use("/user", userrouter);

db.sequelize.sync().then(() => {
  app.listen(3001, () => {
    console.log("Hello I am server.");
  });
});

这样修改后,访问http://localhost:3001/就能看到你设置的根路径响应,/user的GET和POST请求也能正常工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 11:44:16