You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React集成LangChain使用WebPDFLoader时出现'fs'模块找不到错误的解决方法咨询

React集成LangChain使用WebPDFLoader时出现'fs'模块找不到错误的解决方法咨询

你好呀,这个问题我之前也碰到过,本质原因是**fs是Node.js专属的文件系统模块,而React运行在浏览器环境里,本来就没有这个模块**,但pdf-parse(WebPDFLoader依赖的库)里的代码不小心引入了Node.js的API,导致打包时出错。

你试过在package.json里设置"browser": {"fs": false}但没效果,大概率是因为你用的是Create React App(CRA)这类封装好的脚手架,它默认会覆盖部分webpack配置,导致这个字段没生效。下面给你几个可行的解决方法:

方法一:用Craco自定义CRA的Webpack配置(适用于Create React App项目)

  1. 先安装Craco工具:
npm install @craco/craco --save-dev
# 或者用yarn
yarn add @craco/craco --dev
  1. 修改package.json里的启动脚本,把react-scripts替换成craco:
"scripts": {
  "start": "craco start",
  "build": "craco build",
  "test": "craco test"
}
  1. 在项目根目录创建craco.config.js文件,添加Webpack fallback配置:
module.exports = {
  webpack: {
    configure: {
      resolve: {
        fallback: {
          // 告诉webpack忽略fs模块,因为浏览器环境不需要
          fs: false
        }
      }
    }
  }
}
  1. 重启你的开发服务器,应该就能解决这个报错了。

方法二:修改Vite配置(适用于Vite搭建的React项目)

如果你的项目是用Vite创建的,直接在vite.config.js里添加别名配置,让Vite忽略fs模块:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      fs: false
    }
  }
})

保存后重启开发服务即可。

方法三:检查package.json的browser字段配置位置

如果你不是用CRA/Vite这类脚手架,那可能是你把browser字段放错位置了,它必须在package.json的根节点,比如:

{
  "name": "your-react-app",
  "version": "1.0.0",
  "browser": {
    "fs": false
  },
  // 其他配置...
}

确认位置正确后,重新打包试试。

另外提一句,你的代码里new Blob()是创建了一个空Blob,实际使用时记得传入PDF文件的二进制数据哦,不然loader.load()会加载失败,但这和当前的fs报错无关~

备注:内容来源于stack exchange,提问作者Kai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 11:53:01