如何通过环境变量布尔值自动启动Swagger文档
问题描述
原本通过以下代码实现Node.js应用启动时自动打开Swagger URL:
open(swaggerURL, { app: { name: 'chrome' } });
因频繁自动打开造成困扰,设置环境变量:
LAUNCH_BROWSER_AUTOMATICALLY=true
添加判断逻辑后,变量设为true时Swagger URL并未自动启动:
console.log(process.env.LAUNCH_BROWSER_AUTOMATICALLY); if(process.env.LAUNCH_BROWSER_AUTOMATICALLY == true) { open(swaggerURL, { app: { name: 'chrome' } }); }
终端已确认读取到变量值为true:
Connected to MongoDB. Nodemon Working Server is running on http://localhost:3000 Swagger docs available at http://localhost:3000/api-docs true
解决方法
核心原因
Node.js中process.env的所有环境变量值均为字符串类型,你读取到的true实际是字符串"true",而"true" == true的比较结果为false,导致判断不生效。
修正方案
方案1:直接与字符串'true'比较
将判断条件改为对比字符串值:
console.log(process.env.LAUNCH_BROWSER_AUTOMATICALLY); if (process.env.LAUNCH_BROWSER_AUTOMATICALLY === 'true') { open(swaggerURL, { app: { name: 'chrome' } }); }
方案2:兼容大小写的布尔转换判断
先将环境变量值统一转换为小写,再判断,兼容TRUE、True等不同大小写的输入:
console.log(process.env.LAUNCH_BROWSER_AUTOMATICALLY); const shouldLaunch = process.env.LAUNCH_BROWSER_AUTOMATICALLY?.toLowerCase() === 'true'; if (shouldLaunch) { open(swaggerURL, { app: { name: 'chrome' } }); }
方案3:设置默认行为
若未配置环境变量时默认不打开,可补充默认值处理:
console.log(process.env.LAUNCH_BROWSER_AUTOMATICALLY); const launchFlag = process.env.LAUNCH_BROWSER_AUTOMATICALLY ?? 'false'; if (launchFlag.toLowerCase() === 'true') { open(swaggerURL, { app: { name: 'chrome' } }); }
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

