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

Node.js环境下TypeScript创建File对象提示File is not defined如何解决?

问题根源

File 是浏览器端的Web API,不属于ECMAScript标准内置对象,你遇到的报错本质是运行环境缺失实现,而非TypeScript配置遗漏:

  • 你的tsconfig.json中lib字段引入了DOM类型库,因此TypeScript编译阶段可以正常识别File类型,不会抛出类型错误
  • 18.x以下版本的Node.js原生环境没有内置File的实现,因此代码运行时会抛出ReferenceError: File is not defined
解决方案

根据你的实际需求可以选择以下任意一种方案:

方案1:升级Node.js到18.x及以上版本

Node.js 18.x版本开始已经内置了Web标准的File、Blob等API,直接运行代码即可,无需额外修改配置。如果TypeScript类型检查仍报错,可以在tsconfig.json的compilerOptions.lib字段中添加ES2022,同时将target调整为ES2022,并升级@types/node依赖到最新版本即可。

方案2:使用第三方polyfill兼容低版本Node.js

如果需要兼容18以下的Node.js版本,可以安装Web API的polyfill包:

  1. 安装依赖:
    npm install @web-std/file
  2. 在业务代码顶部引入File实现即可正常使用:
import { File } from '@web-std/file'
// 后续代码无需修改
const file = new File(["asdasdsa"], 'metadata.json');
console.log(file.name);

方案3:使用Node.js原生能力替代(推荐纯控制台场景使用)

如果你的业务只是需要操作本地文件,不需要完全兼容WebFile接口,完全可以直接使用Node.js内置的fs模块完成文件读写、元信息获取等操作,不需要引入额外依赖:

import * as fs from 'fs/promises'
// 示例:写入本地文件
await fs.writeFile('metadata.json', 'asdasdsa')
// 示例:读取文件元信息
const stat = await fs.stat('metadata.json')
console.log(stat.size, 'metadata.json')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:42:03