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

Node.js/Express.js项目集成Swagger UI时JSON导入报错如何解决

问题根因

你项目的package.json中配置了"type": "module",使用Node.js原生ES模块规范,该规范默认不支持直接导入.json后缀的文件,因此抛出ERR_UNKNOWN_FILE_EXTENSION错误。

解决方案

按以下步骤修改即可解决报错,同时实现你要求的文档访问路径:

步骤1:修改swagger配置文件导入方式(优先推荐,无实验性特性依赖)

替换server.js中导入swagger.json的代码,改用文件读取+JSON解析的方式加载配置:

// 删掉原来的 import swaggerDocument from "./swagger.json"
// 新增fs模块导入,读取解析swagger配置
import fs from 'fs'
const swaggerDocument = JSON.parse(fs.readFileSync('./swagger.json', 'utf-8'))

步骤2:修改Swagger UI挂载路径

将server.js中原先挂载Swagger UI的代码路径从/api_docs改为你需要的/challenge/docs:

// 删掉原来的 app.use("/api_docs", swaggerUi.serve, swaggerUi.setup(swaggerDocument));
// 替换为以下代码
app.use("/challenge/docs", swaggerUi.serve, swaggerUi.setup(swaggerDocument));

可选替代方案(不推荐生产环境使用)

如果不想修改导入代码,也可以在启动命令中添加JSON模块导入的实验性参数,修改package.json的scripts配置:

"scripts": {
  "dev": "nodemon --experimental-json-modules server.js",
  "build": "node --experimental-json-modules server.js"
}
效果验证

修改完成后执行npm run dev启动项目,直接访问http://localhost:5000/challenge/docs即可正常打开Swagger API文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 04:30:05