umi的环境变量

Created on 28 Dec 2018  ·  13Comments  ·  Source: umijs/umi

umi中怎么设置总定义的环境变量呢?
在package.json中有如下代码

"scripts": { "start": "cross-env APP_KEY=123 umi dev" }

在项目中为什么打印 console.log(process.env) 只有一个 NODE_ENV=development,没有APP_KEY
要怎么样才能获取到 APP_KEY这个自定义的变量呢?

Most helpful comment

需要这样透传:

define: {
    "process.env.SERVER": process.env.SERVER,
  },

All 13 comments

要用define穿透一下,例如:

"define": {
  "process.env.APP_KEY": 123,
}

要用define穿透一下,例如:

"define": {
  "process.env.APP_KEY": 123,
}

console.log(process.env) 只能看到 NODE_ENV 的值,console.log(process.env.APP_KEY) 可以看到在 define 中设置的值

要用define穿透一下,例如:

"define": {
  "process.env.APP_KEY": 123,
}

console.log(process.env) 只能看到 NODE_ENV 的值,console.log(process.env.APP_KEY) 可以看到在 define 中设置的值

我也是卡这里了,打印process.env死活拿不到值,直到看到你这句话,打印出来一看一脸懵逼

后来翻了下,应该是用的webpack defineplugin直接将console.log(process.env.APP_KEY)这句给做了字符串替换,直接搞成了console.log(123),讲真,我觉得这里直接使用process.env.APP_KEY来做定义对不熟悉defineplugin的人来说真的太容易引起歧义了

要用define穿透一下,例如:

"define": {
  "process.env.APP_KEY": 123,
}

console.log(process.env) 只能看到 NODE_ENV 的值,console.log(process.env.APP_KEY) 可以看到在 define 中设置的值

我也是卡这里了,打印process.env死活拿不到值,直到看到你这句话,打印出来一看一脸懵逼

后来翻了下,应该是用的webpack defineplugin直接将console.log(process.env.APP_KEY)这句给做了字符串替换,直接搞成了console.log(123),讲真,我觉得这里直接使用process.env.APP_KEY来做定义对不熟悉defineplugin的人来说真的太容易引起歧义了

大哥,到底怎样取APP_KEY的值啊,process.env打印出来只有NODE_ENV

要用define穿透一下,例如:

"define": {
  "process.env.APP_KEY": 123,
}

console.log(process.env) 只能看到 NODE_ENV 的值,console.log(process.env.APP_KEY) 可以看到在 define 中设置的值

我也是卡这里了,打印process.env死活拿不到值,直到看到你这句话,打印出来一看一脸懵逼
后来翻了下,应该是用的webpack defineplugin直接将console.log(process.env.APP_KEY)这句给做了字符串替换,直接搞成了console.log(123),讲真,我觉得这里直接使用process.env.APP_KEY来做定义对不熟悉defineplugin的人来说真的太容易引起歧义了

大哥,到底怎样取APP_KEY的值啊,process.env打印出来只有NODE_ENV

对啊,process.env打印出来就只有NODE_ENV
因为你自定义的process.env.APP_KEY被webpack整体当做一个字符串给进行了替换
等价于你以为你写的是console.log(process.env.APP_KEY),实际上这句话被webpack给变成了console.log(123),所以我说这里使用process.env来做定义会引起歧义

要用define穿透一下,例如:

"define": {
  "process.env.APP_KEY": 123,
}

console.log(process.env) 只能看到 NODE_ENV 的值,console.log(process.env.APP_KEY) 可以看到在 define 中设置的值

我也是卡这里了,打印process.env死活拿不到值,直到看到你这句话,打印出来一看一脸懵逼
后来翻了下,应该是用的webpack defineplugin直接将console.log(process.env.APP_KEY)这句给做了字符串替换,直接搞成了console.log(123),讲真,我觉得这里直接使用process.env.APP_KEY来做定义对不熟悉defineplugin的人来说真的太容易引起歧义了

大哥,到底怎样取APP_KEY的值啊,process.env打印出来只有NODE_ENV

�对啊,process.env打印出来就只有NODE_ENV
因为你自定义的process.env.APP_KEY被webpack整体当做一个字符串给进行了替换
等价于你以为你写的是console.log(process.env.APP_KEY),实际上这句话被webpack给变成了console.log(123),所以我说这里使用process.env来做定义会引起歧义

那不同环境的变量define定义在哪呢

@mov1er 没明白你意思

@mov1er 您好我也遇上了相同的问题,请问您解决了吗

@mov1er 您好我也遇上了相同的问题,请问您解决了吗

"define": {
"process.env.APP_KEY": process.env.APP_KEY,
}
console.log(process.env.APP_KEY) 你就明白了

这个实在太坑了,我找了一上午解决问题。

那怎么拿到不同环境下的变量的值啊,比如我development环境下 设置了APP_KEY的值是123,production设置的APP_KEY的值是456 ,那我怎么拿到不同环境下对应的值呢?

需要这样透传:

define: {
    "process.env.SERVER": process.env.SERVER,
  },

那怎么拿到不同环境下的变量的值啊,比如我development环境下 设置了APP_KEY的值是123,production设置的APP_KEY的值是456 ,那我怎么拿到不同环境下对应的值呢?

你怎么设置的,又是怎么拿的?贴一下代码

Was this page helpful?
0 / 5 - 0 ratings