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

Quasar项目执行ENV_FILE=dev quasar build时环境变量未定义问题

解决Quasar项目中命令行传递ENV_FILE变量未定义的问题

问题核心

命令行传递的环境变量需确保在Quasar配置文件执行时已被正确注入,同时你的代码存在重复调用dotenv.config()的问题,且未处理变量不存在的边界情况。

解决方案

1. 确保命令行传递变量的正确方式

不同操作系统的命令行语法有差异,需对应使用:

  • Linux/macOS:
    ENV_FILE=dev quasar build
    
  • Windows(CMD):
    set ENV_FILE=dev && quasar build
    
  • Windows(PowerShell):
    $env:ENV_FILE='dev'; quasar build
    

2. 修正quasar.config.js代码

调整配置文件逻辑,先正确获取命令行变量,再加载对应.env文件,同时增加错误处理:

const { configure } = require('quasar/wrappers');
const dotenv = require('dotenv');
const path = require('path');

module.exports = configure(function(ctx) {
  // 获取命令行传入的ENV_FILE,默认值设为dev
  const targetEnv = process.env.ENV_FILE?.toLowerCase() || 'dev';
  
  // 加载指定的.env文件,使用path.resolve确保路径正确
  const envResult = dotenv.config({
    path: path.resolve(__dirname, `.env.${targetEnv}`)
  });

  // 处理.env文件加载失败的情况
  if (envResult.error) {
    throw new Error(`无法加载.env.${targetEnv}文件: ${envResult.error.message}`);
  }

  return {
    env: {
      ...envResult.parsed
    },
    // 保留你的其他Quasar配置项
  };
});

3. 验证变量是否生效

可以在configure函数开头添加日志,确认变量是否被正确获取:

console.log('当前使用的环境文件:', `.env.${process.env.ENV_FILE?.toLowerCase() || 'dev'}`);

额外说明

如果你的Quasar版本是v2及以上,也可以考虑使用官方的mode特性(quasar build -m dev)来对应不同环境,但上述方案完全适配你自定义ENV_FILE变量的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:45:17