我做了一个基本的 Node.js 项目,但我的 .env 文件不起作用。我的项目位于 https://github.com/TheGElCOgecko/weather-predictor/tree/main。主要细节是我正在使用 dotenv-webpack,我的 .env 文件位于根目录中,该项目是 React/Node.js 项目,每当我尝试从 .env 文件中打印值时,它都会打印“未定义” ”(我在 App.js 中打印它),当我使用“npm run deploy”将其部署到 GitHub Pages 上时,它直接删除了我的 .env 文件。
我尝试使用 dotenv 而不是 dotenv-webpack,但这不起作用,如果我包含“require('dotenv').config();”,它就无法编译。我的 webpack.config.js 曾经包含这个:
resolve: {
fallback: {
"path": require.resolve("path-browserify"),
"os": require.resolve("os-browserify/browser"),
"crypto": require.resolve("crypto-browserify"),
}
},
我切换到 dotenv-webpack 因为至少可以编译(而使用 dotenv 会导致编译失败),但也许这是错误的选择?
dotenv
无法按照您的尝试使用,它不是 webpack 插件,并且不适用于客户端应用程序:
plugins: [
new Dotenv(),
]
这就是
dotenv-webpack
所做的,你试图解决一个本来就不应该存在的问题。
该项目是使用
create-react-app
创建的,它是 Webpack 的预配置包装器,并使用其命令来运行应用程序。它会忽略 webpack.config.json 并且不需要额外的配置,除非另有证明。内部 Webpack 配置可以扩展,但这应该以特殊的方式完成,例如与克拉科。
dotenv
并实现了类似于 dotenv-webpack
的开箱即用解决方案。问题是环境变量没有考虑 REACT_APP_
前缀的要求。
REACT_APP_API_KEY_TEST
应在 .env
中定义,然后它将在 React 应用程序中以 process.env.REACT_APP_API_KEY_TEST
形式使用。