【问题标题】:Module not found: Error: Cannot resolve module 'fs'找不到模块:错误:无法解析模块“fs”
【发布时间】:2018-06-29 17:40:23
【问题描述】:

我正在使用 Babel 和 Webpack 制作一个 React 应用程序,并且我想使用来自 npm 的 file-exists 包。我已经安装了这个包并将其保存为我的项目的依赖项。运行 npm start 后出现此错误:

./~/file-exists/index.js 中的错误
找不到模块:错误:无法解析 C:\GitHub\CryptoPrices\node_modules\file-exists 中的模块“fs”
@ ./~/file-exists/index.js 3:9-22

file-exists 使用 fs 作为依赖项,但由于某种原因它不起作用。如果我在任何地方都不需要file-exists,Npm 启动和运行没有任何问题。

这是我的 webpack 配置文件:

module.exports = {
  entry: [
    './src/index.js'
  ],
  output: {
    path: __dirname,
    publicPath: '/',
    filename: 'bundle.js'
  },
  module: {
    loaders: [{
      // exclude: /node_modules/,
      loader: 'babel',
      query: {
        presets: ['react', 'es2015', 'stage-1']
      }
    }]
  },
  resolve: {
    extensions: ['', '.js', '.jsx']
  },
  devServer: {
    historyApiFallback: true,
    contentBase: './'
  }
};

我是 Webpack 和 Babel 的新手,所以我有点迷茫。

【问题讨论】:

    标签: reactjs webpack webpack-dev-server babeljs


    【解决方案1】:

    看起来您正在调用 index.js 文件中的 fs file-exists 方法。我不确定您在什么上下文中调用该方法,但这看起来像是对服务器端方法的客户端调用。我最近遇到了类似的问题。

    据我了解,主要问题似乎是您无法在浏览器解释的客户端(前端)代码中调用服务器端(节点)方法。您必须从服务器调用它们。

    Webpack 可以将 fs 模块代码加载到您的前端,但浏览器实际上无法解释这些 Node 方法并运行它们;只有 Node 环境可以做到这一点。 (more here)

    您可以通过修改对 fs 方法的调用在服务器端某处进行,或者通过找到一个等效的浏览器支持的包来解决核心问题,该包提供与您需要的 fs 方法相同的功能,但可以在浏览器中运行。

    快速搜索“浏览器的 fs 模块”会显示各种可能满足您需求的选项,例如 fs-webbrowserify-fsfiler

    这是一个类似的问题,有一些见解。 Use fs module in React.js,node.js, webpack, babel,express

    【讨论】:

    【解决方案2】:
    node: {
      fs: 'empty'
    }
    

    尝试将上面的代码添加到您的 webpack 配置文件中,错误应该会消失。

    【讨论】:

    • 我已经试过了,错误消失了,但是文件存在不起作用
    猜你喜欢
    • 2019-12-01
    • 2019-05-31
    • 2017-04-18
    • 2022-06-27
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 2021-08-01
    相关资源
    最近更新 更多