【发布时间】:2019-12-30 12:05:29
【问题描述】:
我想访问我在前端 (React) 中定义的一些环境变量。
我有以下设置:
- React + NodeJS(我不使用
create-react-app) - Webpack 4
- Dotenv
我尝试关注https://medium.com/@trekinbami/using-environment-variables-in-react-6b0a99d83cf5#0618,但它不起作用,也抛出任何错误。
webpack.config.js
const dotenv = require("dotenv");
module.exports = () => {
// call dotenv and it will return an Object with a parsed key
const env = dotenv.config().parsed;
// reduce it to a nice object, the same as before
const envKeys = Object.keys(env).reduce((prev, next) => {
console.log(prev)
prev[`process.env.${next}`] = JSON.stringify(env[next]);
return prev;
}, {});
return {
...,
plugins: [
new webpack.DefinePlugin(envKeys)
],
...
}
通过上面的 Webpack 配置,我想我应该可以在 file.js 中执行 <h4>My var: {process.env.REACT_APP_MY_VAR}</h4>,当然我已经在位于项目根目录的 .env 文件中定义了 REACT_APP_MY_VAR。
我希望file.js 呈现REACT_APP_MY_VAR 的值,但我没有呈现任何内容,无论是值还是错误。
【问题讨论】:
-
dotenv旨在在您的代码从开发人员机器转移到 CI 环境再到生产服务器时,对代码保密。如果某些不受信任的人获得了您的代码,他们也不会获得您的秘密。前端代码不同。您总是将其发送到浏览器以供任何人阅读。不要将敏感信息放在前端代码中并跳过使用 dotenv 以避免错误的安全感。相反,您可以直接为webpack.DefinePlugin定义一个对象(envKeys变成什么)
标签: javascript reactjs webpack dotenv