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

Postman无法请求Express路由:TypeScript环境路由配置问题求助

Express + TypeScript 独立路由无响应问题排查与修复

问题场景

我正在学习用TypeScript开发Express+Node.js应用,配置独立路由时遇到问题:

  • 在bookRoutes.ts中定义的路由挂载到主文件后,Postman请求无响应
  • 直接在主模块里定义/book路由时,能正常获取响应

路由文件(bookRoutes.ts)代码:

import express,{ Express, Router,Response, Request } from "express";
export const bookRoute = Router();
bookRoute.use(express.json)

bookRoute.get('/book',(req:Request,res:Response) =>{
    res.send("Hola");
});

主文件代码:

import express, { Express,Request,Response } from "express";
import * as bookRoutes from "./modules/book/bookRoutes";
import { Router } from "express";
const app: Express = express();
const port = process.env.PORT || 3000;

app.use('/',bookRoutes.bookRoute)

app.listen(port, () => {
    console.log(`[server]: Server is running at http://localhost:${port}`);
  });

问题原因

express.json是一个工厂函数,需要执行后返回可使用的中间件实例。原代码中bookRoute.use(express.json)没有加括号,相当于传递了函数本身而非执行后的中间件,导致请求处理被阻塞,无法返回响应。

修复方案

1. 修正express.json的调用方式

修改bookRoutes.ts中的中间件配置,给express.json加上括号:

bookRoute.use(express.json());

2. 修复后的完整bookRoutes.ts代码

import express,{ Router,Response, Request } from "express";
export const bookRoute = Router();
// 修复:执行express.json获取中间件实例
bookRoute.use(express.json());

bookRoute.get('/book',(req:Request,res:Response) =>{
    res.send("Hola");
});

可选优化:调整路由挂载前缀

如果想让路由结构更清晰,可以在主文件中修改挂载路径,比如:

// 挂载到/api前缀下,访问路径变为http://localhost:3000/api/book
app.use('/api', bookRoutes.bookRoute);

如果仍需使用/book作为访问路径,保持原app.use('/', bookRoutes.bookRoute)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 22:45:06