如何让 Netlify 在构建期间创建 .env 文件?或者如何让 dotenv 获取系统变量?

How can I make Netlify create a .env file during build? Or how can I make dotenv pick up system variables?

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

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

但是当我尝试将 MY_ENVMY_URL 与 Netlify 一起使用时,它们是 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,
  })
]