【问题标题】:Module not found: Error: Can't resolve 'fs' in node_modules\dotenv\lib'未找到模块:错误:无法解析 node_modules\dotenv\lib 中的“fs”
【发布时间】:2022-02-04 15:37:56
【问题描述】:

我正在尝试使用带角度的 dotenv,但是当涉及到需要 dotenv 时

 require('dotenv').config()  
 or
 const Dotenv = require('dotenv-webpack');

我收到以下错误:

./node_modules/dotenv/lib/main.js 中的错误 未找到模块:错误:无法解析“C:\Users\57322\Favorites\Proyecto\core4edu\node_modules\dotenv\lib”中的“fs”

package.json

"dotenv": "^8.2.0",
"dotenv-webpack": "^1.7.0",

【问题讨论】:

标签: angular dotenv


【解决方案1】:

我认为问题与 webpack 有关,我在 next.js 项目中遇到了同样的问题,这是我解决问题的方法。

我在我的根文件夹中创建了一个next.conf.js 文件,其中有我的.env 文件,我导入了dotenv 并导出了包含我所有环境和这些变量的模块,如下所示。

最后在我的索引文件和我的组件中我不需要导入dotenv,我只需要粘贴我的process.env.API_URL

我希望这个例子能解决你的问题。

【讨论】:

  • 对我不起作用。我在next.conf.js 文件中得到'REACT_APP_MY_ENV_VAR' is not defined.。什么叫next.conf.js,我怎么知道它正在被使用?
  • 工作就像一个魅力。谢谢
  • 为我工作,除了我必须使用冒号而不是 = env: { YB_RAILS: process.env.YB_RAILS, },
  • NEXT JS中其实是内置了加载变量的支持,不需要专门找一个loader
  • 谢谢您,先生,一整天都在这里! :D 天才 ;)
【解决方案2】:

我也遇到过类似的情况——在 webpack 开发模式下工作,安装 dotenv,报错“Module not found: Error: Can't resolve 'fs' in node_modules\dotenv\lib'”。

我卸载了 dotenv,只使用 dotenv-webpack 进行开发。我配置了 webpack.config.js,因为它是写在 docs 中的。

现在一切正常。无需创建任何额外文件即可全局访问环境变量。

【讨论】:

    【解决方案3】:

    我遇到了类似的问题。 dotenv-webpack 安装就足够了。引起问题的是 dotenv require 语句。删除它,你就可以开始了!

    【讨论】:

      【解决方案4】:

      我还想在 @Sidouxie's solution 之上添加 TypeScript 代码:

      1. 在您的根目录中创建一个以.d.ts 结尾的文件。

      2. 将此添加到文件中:

        declare global {
         namespace NodeJS {
           interface ProcessEnv {
             API_URL:string;
           }
          }
        }
        

      这将在您的 TypeScript 项目中全局检查您的环境变量。

      【讨论】:

        【解决方案5】:

        如果您在使用 create-react-app 应用时遇到此错误,则需要转到“react-scripts”webpack 配置。

        node_modules/react_scripts/config/webpack.config.js

        在“解决”下:

        resolve: {
          ....
          // add the fallback setting below 
          fallback: {
            "fs": false,
            "os": false,
            "path": false
          },
          ....
        }
        

        【讨论】:

          【解决方案6】:

          Angular 9 开始的package.json 的这个小补充(在Angular 10 上确认)解决了这个问题。

          ...
          "browser": {
            "fs": false
          },
          ...
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-02-21
            • 2021-01-30
            • 2017-07-29
            • 1970-01-01
            • 2017-04-18
            • 2022-08-07
            • 1970-01-01
            相关资源
            最近更新 更多