Reactjs 在开发过程中,而不是部署到netlify时,对工作的环境变量作出反应

Reactjs 在开发过程中,而不是部署到netlify时,对工作的环境变量作出反应,reactjs,environment-variables,netlify,Reactjs,Environment Variables,Netlify,在我的电脑上一切正常,但在部署到netlify后,我的环境变量未定义。 这就是我在这个州所拥有的 let apikey; if(process.env.NODE_ENV !== 'production') { apikey = process.env.REACT_APP_APIKEY; console.log(apikey); } else { apikey = process.env.APIKEY; console.log(apikey); } 但仍然没有

在我的电脑上一切正常,但在部署到netlify后,我的环境变量未定义。 这就是我在这个州所拥有的

let apikey;

if(process.env.NODE_ENV !== 'production') {
    apikey = process.env.REACT_APP_APIKEY;
    console.log(apikey);
} else {
    apikey = process.env.APIKEY;
    console.log(apikey);
}

但仍然没有定义:)


在netlify中,除非您在构建过程中将环境变量构建到脚本中,否则您将无法访问客户端的环境变量。这就是为什么不应该在客户端脚本的构建中存储密钥的原因

Netlify上没有服务器端,除非使用函数。如果您使用的是Netlify函数(lambda函数),则通过管理UI访问环境变量设置不会出现问题

只有构建环境知道并可以使用环境 大多数情况下,变量是在构建期间在shell中设置的, 但是您的代码不是从构建环境提供的,而是从构建环境提供的 构建后不进行修改

在运行build命令之前,将REACT_APP_APIKEY存储在Netlify构建环境变量中,并使用脚本构建.env

脚本/create-env.js

const fs = require('fs')
fs.writeFileSync('./.env',`REACT_APP_APIKEY=${process.env.REACT_APP_APIKEY}`)
将脚本作为构建的一部分运行

node ./scripts/create-env.js