找不到模块:错误:无法解析 dotenv/lib 中的“fs”

Kal*_*lly 12 fs node.js dotenv

突然,在创建反应生产版本时,我收到此错误。

> safe-courier@0.1.0 build
> react-scripts build

Creating an optimized production build...
Failed to compile.

Module not found: Error: Can't resolve 'fs' in '/workspace/safe-courier/client/node_modules/dotenv/lib'
Run Code Online (Sandbox Code Playgroud)

我在网上搜索过,发现类似的案例,但框架不同,但对于这个问题都没有帮助。

我尝试卸载 dotenv 并再次重新安装,但出现相同的错误。我不确定 fs 模块是 Nodejs 的一部分并与其捆绑在一起可能会出现什么问题

小智 32

为了解决这个问题:

  1. 在应用程序的根级别创建 .env 文件
  2. 以 REACT_APP_ 开头的变量命名 // 这是关键!
  3. 每次更改环境变量时都使用 npm start 重新启动服务器
  4. 将变量与 process.env.NAMEOFYOURVARIABLE 一起使用

您的 React 应用程序不需要 dotenv。


小智 15

我解决了同样的问题;

  1. npm install dotenv-webpack --save-dev
  2. 在根文件夹下创建.env文件
  3. 创建env变量为
REACT_APP_YOURVARIABLE=itsvalue
Run Code Online (Sandbox Code Playgroud)
  1. 在根文件夹下创建 webpack.config.js 文件,内容如下
const Dotenv = require('dotenv-webpack');
module.exports = {
    plugins: [
        new Dotenv()
    ]
}
Run Code Online (Sandbox Code Playgroud)
  1. .env然后无论你想在write中使用变量
process.env.REACT_APP_YOURVARIABLE
Run Code Online (Sandbox Code Playgroud)

无需导入dotenv。它已经完成了webpack.config.js

  • 这:不需要导入dotenv。已经在 webpack.config.js 中完成了 (3认同)

aja*_*ack 7

1- 正如 St\xc3\xa9phane Sulikowski 已经提到的,不需要使用dot-env在 React 项目中使用

\n

为什么?

\n
\n

“dot-env”使用了一些仅受nodejs支持但不被“浏览器引擎”支持的模块,如fs、os等。React-code-bundle在浏览器中运行,而浏览器不支持模块“fs”,因此如果任何模块引用“fs”模块将得到相同的错误。

\n
\n
\n

Reactjs 有一些内置支持来使用存储在 a 中的环境变量.env文件中的环境变量,并以REACT_APP_

\n
\n

2-如果由于某种原因必须使用它,请使用“env-cmd”

\n
npm install env-cmd\n
Run Code Online (Sandbox Code Playgroud)\n

3-创建特定于环境的 .env 文件,例如.env.localOR.env

\n

4- 在您的“特定环境”中或.env文件中,添加以以下内容开头的变量REACT_APP_

\n
\n

REACT_APP_API_BASE_URL="http://localhost:4000"

\n
\n

5-在代码文件中使用这些环境变量\n例如 console.warn (process.env.REACT_APP_API_BASE_URL)

\n

6-可选......配置package.json,如下所示

\n

...

\n
"scripts": {\n    "start": "env-cmd -f .env.local react-scripts start",\n    "build:staging": "env-cmd -f .env.staging react-scripts build",\n    "build:production": "env-cmd -f .env.production react-scripts build",\n    "test": "react-scripts test",\n    "eject": "react-scripts eject"\n  }\n
Run Code Online (Sandbox Code Playgroud)\n

注意 - 当您在文件中添加新变量时.env ....,您必须运行npm startOR 相关...

\n