Angular 16集成MediaInfo.js遇Emscripten类型定义错误
解决Angular 16中mediainfo.js的TypeScript编译错误
问题根源
你遇到的编译错误,是因为mediainfo.js的类型定义依赖的EmscriptenModule和EmscriptenModuleFactory类型,要么在你安装的@types/emscripten@1.39.7版本中结构不匹配,要么TypeScript没有正确识别这些类型。
可行解决方案
1. 升级@types/emscripten到兼容版本
尝试安装适配性更好的Emscripten类型包版本,优先试最新稳定版:
npm install @types/emscripten@latest --save-dev
如果最新版仍有问题,可尝试和mediainfo.js v0.2.1发布时间接近的版本:
npm install @types/emscripten@1.41.0 --save-dev
2. 配置TypeScript自动加载类型
在项目根目录的tsconfig.json中,把emscripten加入types数组,让TypeScript自动识别对应的类型定义:
{ "compilerOptions": { // 保留其他原有配置 "types": ["emscripten"] } }
3. 手动导入类型(临时修复)
如果前两种方法无效,可在使用mediainfo.js的组件/服务文件顶部,手动导入所需类型:
import type { EmscriptenModule, EmscriptenModuleFactory } from 'emscripten';
4. 临时修改mediainfo.js的类型定义(不推荐长期用)
若以上方案都不行,可直接修改node_modules/mediainfo.js/dist/MediaInfoModule.d.ts文件,在文件顶部添加类型导入:
import type { EmscriptenModule, EmscriptenModuleFactory } from 'emscripten';
注意:这种修改会在包更新后被覆盖,仅作为临时应急方案。
内容的提问来源于stack exchange,提问作者Prashant Gupta
相关产品推荐
相关产品推荐

