我有环境变量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
是从哪里来的
3条答案
按热度按时间68bkxrlz1#
如果使用
create-react-app
,则只有前缀为REACT_APP_
的环境变量可用。尝试
console.log(SERVER_URL)
,这就是您的undefined
的来源。创建一个环境变量
REACT_APP_SERVER_URL
,并在应用中使用process.env.REACT_APP_SERVER_URL
引用它。iklwldmw2#
内部
config.js
:其他文件
app.js
:iovurdzv3#
我遇到了和OP一样的问题,不明白为什么我的env变量没有出现在react中。对于任何一个来自nodejs背景,对react或create-react-app没有什么经验的人来说,这对我来说是一个令人沮丧的浪费时间,我想保存你!
通常在nodejs中,我会先使用
import process
,然后再尝试在脚本中使用它,如下所示但这可能已经在create-react-app的引擎盖下发生了,所以如果你出于某种原因(也许它覆盖了
process
的前一个示例?)重新导入它(通过简单地如上所示导入它),它将清除env属性,你将无法访问任何东西。这里的解决方案是不调用
import process
,而是在任何需要的地方使用process对象。我还尝试导入dotenv,这也是由于某种原因不起作用!您只需要从已经存在的进程对象中获取它。