前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >umijs环境变量问题

umijs环境变量问题

作者头像
阿超
发布2023-07-21 15:17:56
1.1K2
发布2023-07-21 15:17:56
举报
文章被收录于专栏:快乐阿超快乐阿超

我们关心的,不是你是否失败了,而是你对失败能否无怨。——林肯

今天遇到一个问题,umijs框架下的环境变量配置不好使

首先是我package.json里的配置是这样的:

代码语言:javascript
复制
 "scripts": {
    "start": "cross-env NODE_ENV=dev umi dev",
    "build:test": "cross-env NODE_ENV=test umi build",
    "build:production": "cross-env NODE_ENV=prod umi build"
}

然后在我其中一个js文件中进行引用:

代码语言:javascript
复制
console.log({ NODE_ENV: process.env.NODE_ENV });
console.log({ 'process.env': process.env });

然后当我指定为test

代码语言:javascript
复制
"scripts": {
   "start": "cross-env NODE_ENV=test umi dev"
}

其打印出来的结果仍然是development,(大概是这个效果,这里是手动做的打印数据)

于是按照umijs官方文档去配置:配置

找到.umirc.ts

代码语言:javascript
复制
import { defineConfig } from 'umi';


export default defineConfig({
    define: {
        'process.env': {
            NODE_ENV: 'test',
        },
    }
})

配置完毕后,发生了一些奇怪的变化,我看到了这一幕

取值时仍然是development,但是随后我展开打印,却变成了test

这时候,我想到换一个变量名,于是我修改为UMI_ENV

代码语言:javascript
复制
import { defineConfig } from 'umi';


export default defineConfig({
    define: {
        'process.env': {
            UMI_ENV: 'test',
        },
    }
})

然后发现其成功生效

代码语言:javascript
复制
console.log({ UMI_ENV: process.env.UMI_ENV });
console.log({ 'process.env': process.env });

打印结果

此时虽然成功修改到了全局变量,但我这个.umirc.ts没有按照我package.json中的环境变量进行多环境应用配置,于是我找到了umijs官方文档提到的多份环境配置

新建了.umirc.dev.ts

代码语言:javascript
复制
import { defineConfig } from 'umi';

export default defineConfig({
    define: {
        'process.env': {
            UMI_ENV: 'development',
        },
    },
});

新建了.umirc.test.ts

代码语言:javascript
复制
import { defineConfig } from 'umi';

export default defineConfig({
    define: {
        'process.env': {
            UMI_ENV: 'test',
        },
    },
});

以及.umirc.prod.ts

代码语言:javascript
复制
import { defineConfig } from 'umi';

export default defineConfig({
    define: {
        'process.env': {
            UMI_ENV: 'production',
        },
    },
});

然后修改package.json

代码语言:javascript
复制
 "scripts": {
    "start": "cross-env UMI_ENV=dev umi dev",
    "build:test": "cross-env UMI_ENV=test umi build",
    "build:production": "cross-env UMI_ENV=prod umi build"
}

此时,只要我们

指定UMI_ENVdev,则对应的process.env.UMI_ENV则是development

指定UMI_ENVtest,则对应的process.env.UMI_ENV则是test

指定UMI_ENVprod,则对应的process.env.UMI_ENV则是production

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档