reactjs react应用程序中未定义环境变量

jmp7cifd  于 2023-03-01  发布在  React
关注(0)|答案(3)|浏览(179)

我有环境变量SERVER_URL=localhost:8000
config.js

export const SERVER_URL = process.env.SERVER_URL;

export { SERVER_URL as default };

和行动:

function fetchData(apiUrl, timeout) {
    return timeoutPromise(timeout || 15000, fetch(`${SERVER_URL}${apiUrl}`))
        .then(checkHttpStatus)
        .then(parseJSON);
}

但是在使用这个fetchData之后,我得到了http://localhost:8000/undefined/some_api
idk这个undefined是从哪里来的

68bkxrlz

68bkxrlz1#

如果使用create-react-app,则只有前缀为REACT_APP_的环境变量可用。
尝试console.log(SERVER_URL),这就是您的undefined的来源。
创建一个环境变量REACT_APP_SERVER_URL,并在应用中使用process.env.REACT_APP_SERVER_URL引用它。

iklwldmw

iklwldmw2#

内部config.js

const SERVER_URL = process.env.SERVER_URL;
export default SERVER_URL;

其他文件app.js

import SERVER_URL from './config';
iovurdzv

iovurdzv3#

我遇到了和OP一样的问题,不明白为什么我的env变量没有出现在react中。对于任何一个来自nodejs背景,对react或create-react-app没有什么经验的人来说,这对我来说是一个令人沮丧的浪费时间,我想保存你!
通常在nodejs中,我会先使用import process,然后再尝试在脚本中使用它,如下所示

import process from 'process';
...
console.log(process.env.MY_VAR);

但这可能已经在create-react-app的引擎盖下发生了,所以如果你出于某种原因(也许它覆盖了process的前一个示例?)重新导入它(通过简单地如上所示导入它),它将清除env属性,你将无法访问任何东西。
这里的解决方案是不调用import process,而是在任何需要的地方使用process对象。

console.log(process.env.REACT_APP_MY_VAR);

我还尝试导入dotenv,这也是由于某种原因不起作用!您只需要从已经存在的进程对象中获取它。

相关问题