Nuxt3 SSR项目环境变量设置异常:判断逻辑输出false问题排查
Nuxt3环境变量判断异常的原因及解决办法
核心原因分析
你遇到的问题大概率是Windows命令行解析时的空格残留:
当你用set ENV=development && nuxt dev时,&&前的空格会被Windows的set命令解析为变量值的一部分,导致process.env.ENV实际值是development (末尾带空格)。直接打印时肉眼难以察觉空格,但用严格相等===判断时,因为多了空格字符,结果自然为false。
解决办法
1. 修正Windows命令行的空格问题
修改package.json的scripts,去掉&&前的空格,确保变量值无多余字符:
"serve-dev": "set ENV=development&&nuxt dev", "serve-prod": "set ENV=production&&nuxt dev"
可以先通过console.log('ENV:', JSON.stringify(process.env.ENV))验证变量值是否包含空格,确认后再执行判断逻辑。
2. 用cross-env实现跨平台兼容
如果需要兼顾Windows和Linux/macOS环境,推荐使用cross-env包统一环境变量设置方式:
- 安装依赖:
npm install cross-env --save-dev - 修改scripts:
"serve-dev": "cross-env ENV=development nuxt dev", "serve-prod": "cross-env ENV=production nuxt dev"
3. 遵循Nuxt3官方环境变量规范(推荐)
Nuxt3更推荐用.env文件结合runtimeConfig管理环境变量,避免终端命令的兼容性问题:
- 创建
.env.development和.env.production文件:# .env.development NUXT_PUBLIC_API_URL=http://dev.your-api.com# .env.production NUXT_PUBLIC_API_URL=http://prod.your-api.com - 在
nuxt.config.ts中配置:export default defineNuxtConfig({ runtimeConfig: { public: { apiUrl: process.env.NUXT_PUBLIC_API_URL } } }) - 修改启动命令:
"serve-dev": "nuxt dev --dotenv .env.development", "serve-prod": "nuxt dev --dotenv .env.production"
之后在代码中可以通过useRuntimeConfig().public.apiUrl直接获取对应环境的API地址,无需手动判断环境变量。
内容的提问来源于stack exchange,提问作者AngusHo53
相关产品推荐
相关产品推荐

