gpt4 book ai didi

node.js - 创建 react 应用程序无法在构建后读取环境变量

转载 作者:搜寻专家 更新时间:2023-11-01 00:28:56 25 4
gpt4 key购买 nike

我有一个 React 应用程序,使用 create-react-app 创建,然后我使用命令构建应用程序:npm run build

它使用 serve 在构建后运行应用程序,如果我们通过运行 ENV=production npm run start 使用开发代码启动应用程序,它可以读取 process.env.ENV 变量因为我将这个插件添加到 webpack 开发配置

   new webpack.DefinePlugin({
'process.env':{
'ENV': JSON.stringify(process.env.ENV),
}
}),

我也将上面的脚本添加到 webpack prod config,但是如果我在构建 ENV=prod serve -s build 之后尝试这个命令,它无法读取环境变量

如何解决这个问题?

最佳答案

如果您在app.config.js 中设置了所有环境变量,您可以在main 中构建后 替换它们。???? ????.chunk.js 文件。

示例 app.config.js 可能如下所示:

export default {
SOME_URL: "https://${ENV_VAR_1}"
SOME_CONFIGURATION: "${ENV_VAR_2}",
}

保持 app.config.js 文件不变,将环境变量替换为它们的实际值。然后,创建优化的生产版本:

npm ci # if not already installed
npm run build

如果使用默认的webpack配置,app.config.js的内容会被打包到build/static/js/main.??????????。 block .js。环境变量的值可以是 envsubst ,使用这样的 bash 脚本:

main_chunk=$(ls build/static/js/main.*.js)
envsubst <$main_chunk >./main_chunk_temp
cp ./main_chunk_temp $main_chunk
rm ./main_chunk_temp

注意:在上面的示例中,envsubst 在运行时读取环境中设置的实际变量,字面意思替换了 ${ENV_VAR_1}${ENV_VAR_2} 和他们在一起。因此,您只能运行一次,因为 block 正在被覆盖。

关于node.js - 创建 react 应用程序无法在构建后读取环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45561432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com