转译Electron应用时tsc报找不到名称错误的解决方法
报错原因
报错根源是tsconfig.json的compilerOptions.lib配置仅引入了es6标准库,缺失DOM环境的全局类型声明。Electron自带的类型定义文件electron.d.ts中使用的Event、MessagePort等类型均属于DOM标准定义的全局类型,未引入对应类型库时,TypeScript无法识别这些名称,就会抛出TS2304错误。
修复步骤
- 打开项目根目录下的
tsconfig.json文件,找到compilerOptions下的lib数组,添加"dom"项。修改后的完整配置如下:
{ "compilerOptions": { "module": "commonjs", "lib": [ "es6", "dom" ], "noImplicitAny": true, "sourceMap": true, "outDir": "dist", "baseUrl": ".", "paths": { "*": [ "node_modules/*" ] } }, "include": [ "src/**/*" ] }
- 保存配置文件后,重新执行
tsc命令执行转译即可。
补充说明
- 如果你开发的是Electron主进程代码,担心引入全量DOM类型会污染全局类型空间,可以额外安装
@types/node补充Node环境类型,再通过compilerOptions.types字段显式约束项目加载的类型范围。但对绝大多数Electron项目而言,直接在lib中添加dom是兼容性最好、改造成本最低的方案。 - 不要随意添加
skipLibCheck: true配置跳过库文件类型检查来规避报错,这种方式会隐藏所有第三方依赖的真实类型问题,不利于后续项目维护。
内容的提问来源于stack exchange,提问作者FluffyBike
相关产品推荐
相关产品推荐

