1***@qq.com
1***@qq.com
  • 发布:2022-03-10 10:20
  • 更新:2023-09-24 00:11
  • 阅读:1475

【报Bug】运行自定义发行时,获取不到自定义的环境变量,对NODE_ENV的修改也无效

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 11

HBuilderX类型: 正式

HBuilderX版本号: 3.2.9

浏览器平台: Chrome

浏览器版本: 99.0.4844.51

项目创建方式: HBuilderX

操作步骤:

"env": {
"UNI_PLATFORM": "h5",
"NODE_ENV": "test"
},

预期结果:

在 vue.config.js中能获取到自定义环境变量,或者能修改NODE_ENV

实际结果:

没有获取到自定义的,也没有修改NODE_ENV

bug描述:

需要在发行时发到测试和生产,但是process.env.NODE_ENV又只有production和development两个值,而发行时又只有production无法区分测试生产,于是自定义了发行方式,并在环境变量中修改了NODE_ENV,新加了环境变量,然而在 vue.config.js中却获取不到新变量,NODE_ENV也没有修改

2022-03-10 10:20 负责人:无 分享
已邀请:
6***@qq.com

6***@qq.com

用 cli 创建项目

  • 1***@qq.com (作者)

    我已经用HBuilderX创建好了的,并且开发迭代了多次了,怕出问题

    2022-03-14 17:07

DCloud_HB_WDL

DCloud_HB_WDL

升级到最新版试试

  • 1***@qq.com (作者)

    我之前是用的最新版,后来发现有问题,我同事的都是正常的,又去下载旧版本就好了。。。

    2022-03-14 17:09

  • p***@163.com

    回复 1***@qq.com: 你现在用的哪个旧版本啊? 我也遇到这个问题了

    2022-03-16 11:12

  • 1***@qq.com (作者)

    回复 p***@163.com: 3.2.9

    2022-04-07 15:27

  • 9***@qq.com

    现在是最新版本.8.7也遇到了

    2023-08-11 14:16

3***@qq.com

3***@qq.com

兄弟,你的问题解决了吗?

4***@qq.com

4***@qq.com

mac hbuilderx 3.4.18.20220630 这个问题依旧存在。项目最开始的时候,就不该使用hbuilderx这种方式,乖乖的使用命令行方式,就不会有这问题,哎

4***@qq.com

4***@qq.com

hbuilderx创建项目的用户可以这样解决这个问题。

  1. 按照文档,自定义发行需这样修改package.json
    {  
    "uni-app": {  
    "scripts": {  
      "h5-prod": {  
        "title": "h5:prod",  
        "browser": "",  
        "env": {  
          "UNI_PLATFORM": "h5",  
          "NODE_ENV": "production",  
          "DEPLOY_ENV": "prod"  
        },  
        "define": {  
          "CUSTOM-CONST": true  
        }  
      },  
      "h5-dev": {  
        "title": "h5:dev",  
        "browser": "",  
        "env": {  
          "UNI_PLATFORM": "h5",  
          "NODE_ENV": "development",  
          "DEPLOY_ENV": "dev"  
        },  
        "define": {  
          "CUSTOM-CONST": false  
        }  
      }  
    }  
    }`  
    }
  2. 安装dotenv
npm install dotenv --save
  1. vue.config.js中这样使用
require('dotenv').config();  

console.log(process.env);  

// process.env中有UNI_SCRIPT这个变量,可以判断,执行的是哪个自定义命令  
if(process.env.UNI_SCRIPT === "h5-prod") {  
  console.log("执行的是build")  
} else {  
  console.log("执行的是dev")  
}
2***@qq.com

2***@qq.com

请问这个问题解决了吗

s***@163.com

s***@163.com

自定义的环境变量在process.env下拿不到

3***@qq.com

3***@qq.com

我也是,vue.config.js中获取不到新变量,用的是mac,HBuilderX版本:3.7.9

1***@qq.com

1***@qq.com

MAC 现在版本 3.7.8也遇到了

  • 9***@qq.com

    我现在是最新版本3.8.7 也遇到了

    2023-08-11 14:15

  • 1***@qq.com

    回复 9***@qq.com: 自定义的环境变量必须以VUE_开头才能获取到,源码里这么要求的

    2023-08-31 15:42

Vinger

Vinger

经过我的测试发现了问题,他的实现方式不是把自定义的环境变量挂载到process.env,而是直接在代码中的文本替换,所以是打印不出来的

https://ask.dcloud.net.cn/question/178868

要回复问题请先登录注册