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

如何在Node/Express API生产环境中禁用Swagger

当然可以!用npm脚本配合环境变量就能轻松实现开发环境启用Swagger、生产环境禁用的需求,下面给你几个实用的方案,都是日常开发里常用的:

方案一:通过环境变量直接控制Swagger加载

这是最直接的方式,核心思路是在Express入口文件里判断当前环境,只有开发环境才挂载Swagger路由。

1. 修改Express入口代码(比如app.js)

const express = require('express');
const app = express();

// 仅在开发环境加载Swagger
if (process.env.NODE_ENV === 'development') {
  const swaggerUi = require('swagger-ui-express');
  const swaggerDocument = require('./swagger.json'); // 你的Swagger定义文件路径
  app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
}

// 你的其他API路由逻辑
app.get('/api/users', (req, res) => {
  res.json({ data: [] });
});

app.listen(process.env.PORT || 3000, () => {
  console.log(`Server running in ${process.env.NODE_ENV} mode`);
});

2. 配置npm脚本

在package.json里添加启动脚本,通过设置NODE_ENV环境变量区分环境:

{
  "scripts": {
    "start": "NODE_ENV=production node app.js",
    "dev": "NODE_ENV=development nodemon app.js"
  }
}
  • 运行npm run dev:开发环境启动,Swagger文档可通过/api-docs访问
  • 运行npm start:生产环境启动,Swagger路由不会挂载,外部无法访问
方案二:用独立配置文件分离环境设置

如果你的项目有很多环境专属配置,把Swagger开关放到单独的配置文件里会更清晰。

1. 创建环境配置文件

在项目根目录新建config文件夹,分别创建开发和生产配置:

  • config/dev.js
module.exports = {
  enableSwagger: true,
  // 其他开发环境配置:比如数据库地址、日志级别等
};
  • config/prod.js
module.exports = {
  enableSwagger: false,
  // 其他生产环境配置
};

2. 在入口文件加载对应配置

修改app.js:

// 根据环境变量加载对应配置
const env = process.env.NODE_ENV || 'development';
const config = require(`./config/${env}`);

const express = require('express');
const app = express();

if (config.enableSwagger) {
  const swaggerUi = require('swagger-ui-express');
  const swaggerDocument = require('./swagger.json');
  app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
}

// 后续路由逻辑...
跨平台兼容小技巧:使用cross-env

上面的脚本在Linux/macOS下没问题,但Windows系统的环境变量设置语法不一样。为了让脚本跨平台通用,推荐安装cross-env包:

  1. 安装依赖:
npm install cross-env --save-dev
  1. 修改npm脚本:
{
  "scripts": {
    "start": "cross-env NODE_ENV=production node app.js",
    "dev": "cross-env NODE_ENV=development nodemon app.js"
  }
}

这样不管是Windows还是类Unix系统,脚本都能正常运行。

额外注意事项
  • 部署生产环境时,一定要确认NODE_ENV确实被设置为production,避免误开启Swagger
  • 如果用Docker部署,可以在Dockerfile里添加ENV NODE_ENV=production,或者启动容器时通过-e NODE_ENV=production传递环境变量
  • 若你的Swagger文档是动态生成的(比如用swagger-jsdoc),同样可以通过环境变量控制生成逻辑,避免生产环境生成不必要的文档内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:13:55