Angular12项目导入OpenLayers出现TS2694类型声明错误如何解决?
错误产生原因
OpenLayers 从v6.0+版本开始已经官方内置了TypeScript类型声明文件,不需要额外安装第三方的@types/ol包。你同时安装了官方ol包和第三方@types/ol,两类类型声明的导出规则不兼容,就会出现类型文件中找不到default导出成员的报错。另外如果你安装的ol版本过高,和Angular 12内置的TypeScript版本(通常为4.2~4.3版本)不匹配,也会触发类似类型错误。
可行解决方案
- 第一步:卸载冗余的第三方类型声明包
执行命令:npm uninstall @types/ol
如果你用yarn作为包管理器,执行:yarn remove @types/ol - 第二步:调整导入写法(卸载后仍报错可尝试)
将ol相关导入语句末尾加上.js后缀,修改为:import Map from 'ol/Map.js'; - 第三步:匹配版本(前两步无效时使用)
如果卸载后仍有版本兼容报错,可降级OpenLayers到兼容Angular 12的稳定版本,执行命令:npm install ol@6.15.1 - 兜底方案:如果仅为类型校验报错不影响运行,可在项目
tsconfig.json的compilerOptions节点中添加配置:"skipLibCheck": true
该配置会跳过第三方依赖包的类型校验,不会影响业务代码的类型检查功能。
内容的提问来源于stack exchange,提问作者barteloma
相关产品推荐
相关产品推荐

