reactjs - 找不到模块 : Error: Cannot resolve module 'fs'

标签 reactjs webpack webpack-dev-server babeljs

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

ERROR in ./~/file-exists/index.js
Module not found: Error: Cannot resolve module 'fs' in C:\GitHub\CryptoPrices\node_modules\file-exists
@ ./~/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 的新手,所以我有点迷失。

最佳答案

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

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

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

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

快速搜索“浏览器的 fs 模块”会出现各种可能适合您需要的选项,例如 fs-web , browserify-fsfiler .

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

关于reactjs - 找不到模块 : Error: Cannot resolve module 'fs' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48358748/

相关文章:

javascript - 将 `Tone.PolySynth()` 与 `Sequence` 方法一起使用时,如何避免音频消失?

javascript - React js 多选 [object Object], [object Object]

reactjs - 如何在 React Hooks 中使用 splice

reactjs - 为什么需要在父子组件中多次导入React?

javascript - Webpack 在脚本中导入一个节点模块

reactjs - React Router (v3) 重定向不重定向到新位置

javascript - Gatsby 当前链接颜色

performance - 根据具体情况指定 webpack "mainFields"

javascript - webpack.config.babel.js中使用 'import'报错

javascript - 无法让 webpack-dev-server (webpack) 在 Chrome 开发工具中生成源映射