【问题标题】:Module not found: Error: Can't resolve 'fs' in dotenv/lib未找到模块:错误:无法解析 dotenv/lib 中的“fs”
【发布时间】:2022-05-05 00:48:12
【问题描述】:

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

> 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'

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

我尝试卸载 dotenv 并重新安装它,但我得到了同样的错误。我不确定理解 fs 模块是 nodejs 的一部分并与它捆绑在一起可能是什么问题

【问题讨论】:

  • 如果您正在构建一些供客户端使用的东西,则不能使用任何引用 fs 模块的模块,因为浏览器中没有 fs 模块。
  • 您的react 应用程序正在浏览器中运行。浏览器不支持fs。由于dotenv 包引用fs,你不能将它用于客户端代码(无论如何它也没有多大意义,因为浏览器中也没有process.env

标签: node.js fs dotenv


【解决方案1】:

解决这个问题:

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

你的 React 应用不需要 dotenv。

【讨论】:

    【解决方案2】:

    我解决了同样的问题;

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      • 2022-11-12
      相关资源
      最近更新 更多