ExpressJS中仅在dev环境输出日志不生效问题排查
解决ExpressJS仅在dev环境显示日志的判断失效问题
问题原因
你在Windows环境下使用set NODE_ENV=dev & node index.js设置环境变量时,NODE_ENV的值可能带有多余的空格(比如'dev '),导致严格相等判断process.env.NODE_ENV === 'dev'不成立。从你打印的process.env.NODE_ENV和类型可以验证这一点——值的末尾大概率有空格。
解决方案
方案1:修正Windows环境变量设置命令
去掉set命令中等号后、&前的空格,确保环境变量值无多余空格:
// package.json中的scripts "dev": "set NODE_ENV=dev&node index.js"
方案2:在判断时去除字符串前后空格
修改中间件的判断逻辑,使用trim()去掉环境变量值的前后空白字符:
server.app.use(function(request, response, next) { console.log(process.env.NODE_ENV, typeof process.env.NODE_ENV); // 用trim()去除前后空格后再判断 if (process.env.NODE_ENV?.trim() === 'dev') { console.log(colors.green('URL : ' + request.originalUrl)); } next(); });
方案3:使用跨平台工具统一设置环境变量
安装cross-env包(跨平台兼容Windows和类Unix系统):
npm install cross-env --save-dev
然后修改package.json中的命令:
"dev": "cross-env NODE_ENV=dev node index.js"
这种方式无需担心不同系统的环境变量设置差异,更推荐在跨平台项目中使用。
内容的提问来源于stack exchange,提问作者tonymx227
相关产品推荐
相关产品推荐

