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

Express项目模块导入正常,浏览器访问接口提示Router不存在

问题解决:浏览器访问出现“Router does not exist”错误

问题描述

已完成所有模块的导入导出操作,但通过浏览器地址栏访问注册对应地址时,页面提示“Router does not exist”。

相关代码片段

controller/auth.js

const register = async (req, res) => {
  res.send('Register User');
};

const login = async (req, res) => {
  res.send('Login User');
};

module.exports = { register, login };

routes/auth.js

const express = require('express');
const router = express.Router();
const { register, login } = require('../controllers/auth');
router.post('/register', register);
router.post('/login', login);

module.exports = router;

app.js

require('dotenv').config();
require('express-async-errors');
const express = require('express');
const app = express();
const connectDB = require('./db/connect');
//route
const authRouter = require('./routes/auth');
const jobsRouter = require('./routes/jobs');

// error handler
const notFoundMiddleware = require('./middleware/not-found');
const errorHandlerMiddleware = require('./middleware/error-handler');

app.use(express.json());
app.use('/api/v1/auth', authRouter);
app.use('/api/v1/jobs', jobsRouter);
// extra packages


app.use(notFoundMiddleware);
app.use(errorHandlerMiddleware);

const port = process.env.PORT || 3000;

const start = async () => {
  try {
    await connectDB(process.env.MONGO_URI);
    app.listen(port, () =>
      console.log(`Server is listening on port ${port}...`)
    );
  } catch (error) {
    console.log(error);
  }
};

start();

问题原因

浏览器地址栏发起的是GET请求,但你的路由中/register和/login仅配置了POST方法,服务器找不到对应GET请求的路由规则,因此触发notFoundMiddleware,返回“Router does not exist”。

解决办法

根据需求选择以下方案之一:

方案1:添加GET请求支持

如果需要通过浏览器直接访问(比如测试),给路由新增GET方法的匹配规则:

// routes/auth.js
router.post('/register', register);
router.get('/register', register); // 新增GET方法路由

router.post('/login', login);
router.get('/login', login); // 可选,为登录接口添加GET支持

方案2:用POST请求工具测试

注册、登录这类操作本就应该使用POST请求,推荐用Postman、curl或浏览器开发者工具发送请求:

  • curl命令测试示例:
curl -X POST http://localhost:3000/api/v1/auth/register
  • 浏览器控制台用fetch测试示例:
fetch('http://localhost:3000/api/v1/auth/register', { method: 'POST' })
  .then(res => res.text())
  .then(data => console.log(data));

方案3:优化404错误提示(可选)

修改notFoundMiddleware,让错误提示更精准,方便排查问题:

// middleware/not-found.js
const notFound = (req, res) => {
  res.status(404).send(`Route ${req.method} ${req.path} does not exist`);
};

module.exports = notFound;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:43:24