You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Vue 3项目中cross-env配置的VUE_APP_MODE环境变量未被识别问题求助

解决Vue 3项目环境变量未被识别的问题

兄弟,我一眼就瞅见你脚本配置里的问题了——你的环境变量传递方式不对,导致VUE_APP_MODE压根没传到serve命令的进程里。

问题根源

你看something脚本的写法:

"something": "cross-env NODE_ENV=development cross-env VUE_APP_MODE=something && npm run serve",

这里犯了两个关键错误:

  1. 完全没必要分开写两个cross-env,多个环境变量应该合并到同一个cross-env命令后声明
  2. &&连接命令会导致前面的环境变量仅在当前进程有效,无法传递给后续的npm run serve进程——因为&&是执行完前一个命令后启动全新进程执行后一个命令,新进程继承不到前一个进程的临时环境变量

顺带说一句,你的dev脚本也有同样的问题:

"dev": "cross-env NODE_ENV=development && npm run serve",

正确的脚本配置

把多个环境变量合并到同一个cross-env命令里,直接跟在npm run serve前面,这样环境变量会被注入到serve的进程中:

"scripts": {
  "serve": "vue-cli-service serve",
  "start": "npm run dev",
  "start:something": "npm run something",
  "dev": "cross-env NODE_ENV=development npm run serve",
  "something": "cross-env NODE_ENV=development VUE_APP_MODE=something npm run serve",
  "build": "vue-cli-service build",
  "test:unit": "vue-cli-service test:unit",
  "lint": "vue-cli-service lint"
}

验证步骤

  1. 先确保你已经安装了cross-env(如果没装,执行npm install cross-env --save-dev
  2. 必须重启开发服务器(环境变量是在启动时注入的,热更新不会生效)
  3. 在Vue组件里打印环境变量测试:
console.log(process.env.VUE_APP_MODE); // 现在应该能输出"something"了

额外提醒

Vue CLI对环境变量有严格的命名规则:只有以VUE_APP_开头的变量才会被自动注入到你的应用中,你用的VUE_APP_MODE是符合规则的,这点没问题。

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

火山引擎 最新活动