如何让 Netlify 在构建期间创建 .env 文件?或者我怎样才能让 dotenv 拾取系统变量?

问题描述

我在本地有以下工作正常:

// .env
MY_ENV='test'
MY_URL='http://192.168.0.16'
// webpack config
...
plugins: [
  new webpack.DefinePlugin({
    'process.env': JSON.stringify(dotenv.config().parsed)
  })
]

但是当我尝试在 Netlify 中使用 MY_ENVMY_URL 时,它们是 undefined。我已经在 Netlify 仪表板的“环境”选项卡上设置了它们。

我怀疑 dotenv 查找的是 .env 文件,而不是系统变量。

我知道插件 dotenv-webpack 允许您使用系统变量,但 dotenv-webpack一个禁忌,因为我需要在浏览器中使用这些变量(它们并不是真正的秘密)。

有什么办法可以让 Netlify 在本地创建一个 .env,以便 dotenv 可以获取它?或者有什么办法可以让 dotenv 使用系统变量?

谢谢!

解决方法

仅用于访问环境变量

process.env.MY_ENV
process.env.MY_URL

不要覆盖你的 process.env

const myenv = dotenv.config().parsed;

plugins: [
  new webpack.DefinePlugin({
    MY_ENV: myenv.MY_ENV || process.env.MY_ENV,MY_URL: myenv.MY_ENV || process.env.MY_ENV,})
]