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

TypeScript引入node的fs模块报Uncaught TypeError错误求助

报错原因
  • 该错误属于运行时错误,并非TypeScript编译阶段抛出的类型错误,与@types/node类型包安装状态、类型配置没有关联。
  • 你的代码当前实际运行在浏览器环境中:浏览器未内置fs这类Node.js原生核心模块,且浏览器遵循的ES模块解析规则要求导入路径必须以/、./、../开头,无法识别fs这类无路径前缀的裸模块名。
  • 如果你使用Vite、Webpack等前端打包工具构建项目,这类工具默认也不会将Node.js核心模块打包到前端产物中,同样会触发该报错。
解决方案

根据你的代码实际运行场景选择对应方案:

场景1:代码预期运行在Node.js服务端

修改相关配置适配Node.js运行规则:

  1. 调整tsconfig.json配置,新增Node模块解析规则,将模块规范改为Node原生支持的CommonJS:
{
  "compilerOptions": {
    "target": "es5",
    "module": "CommonJS",
    "rootDir": "./src",
    "outDir": "./dist",
    "moduleResolution": "Node",
    "types": ["node"]
  }
}

如果要使用ESModule规范,需要额外在项目package.json中新增配置项"type": "module"。
2. 编译完成后使用node dist/你的入口文件名.js命令运行产物,不要直接在浏览器打开或者用前端开发服务器运行。
3. 如果使用esbuild、rollup等打包工具处理Node.js代码,需要在打包配置中将fs等Node核心模块标记为external外部模块,避免打包工具尝试解析这类模块。

场景2:代码为前端项目,需要操作本地文件

浏览器环境禁止直接操作本地文件系统,不能使用fs模块,换用浏览器兼容的实现方案:

  • 若需要读取用户手动选择的本地文件,使用浏览器原生FileReader API实现
  • 若需要读取项目内置的静态资源文件,将资源放到项目静态资源目录下,通过fetch请求资源的相对路径读取内容
  • 若为Electron类跨端桌面项目,fs模块只能在主进程中直接使用,渲染进程需要通过IPC通信调用主进程封装的文件操作能力,或手动开启渲染进程的nodeIntegration配置。

内容的提问来源于stack exchange,提问作者Sakaggi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:45:04