如何使 .env 文件在 Node.js 项目中工作

问题描述 投票:0回答:1

我做了一个基本的 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 会导致编译失败),但也许这是错误的选择?

node.js api-key dotenv
1个回答
0
投票

dotenv
无法按照您的尝试使用,它不是 webpack 插件,并且不适用于客户端应用程序:

plugins: [
    new Dotenv(),
]

这就是

dotenv-webpack
所做的,你试图解决一个本来就不应该存在的问题。

该项目是使用

create-react-app
创建的,它是 Webpack 的预配置包装器,并使用其命令来运行应用程序。它会忽略 webpack.config.json 并且不需要额外的配置,除非另有证明。内部 Webpack 配置可以扩展,但这应该以特殊的方式完成,例如与克拉科。

CRA 已经支持

dotenv
并实现了类似于
dotenv-webpack
的开箱即用解决方案。问题是环境变量没有考虑
REACT_APP_
前缀的要求。

REACT_APP_API_KEY_TEST
应在
.env
中定义,然后它将在 React 应用程序中以
process.env.REACT_APP_API_KEY_TEST
形式使用。

© www.soinside.com 2019 - 2024. All rights reserved.