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

Angular 5.2.0应用导入PouchDB失败问题求助

解决Angular中PouchDB导入的TS1192错误

我之前在Angular项目里折腾PouchDB导入的时候,跟你遇到了完全一样的问题!给你几个亲测有效的解决办法:

为什么会报错?

你用import PouchDB from 'pouchdb';时报的TS1192错误,本质是因为@types/pouchdb的类型定义基于CommonJS规范编写,没有提供ES模块的默认导出,TypeScript在严格模式下就会抛出这个错误。


办法一:使用命名空间导入(最直接的兼容方式)

直接用你试过的第二种导入方式,同时确保类型声明正确:

// 导入整个PouchDB命名空间
import * as PouchDB from 'pouchdb';

// 在服务中声明并初始化数据库
private database: PouchDB.Database;

constructor() {
  this.database = new PouchDB(DATABASE_URL);
}

这种方式完全兼容现有的@types/pouchdb类型定义,不需要额外修改配置,适合大多数Angular项目。

办法二:改用ES模块版本的PouchDB

如果更偏好默认导入的写法,可以安装官方提供的ES模块兼容版:

npm install pouchdb-esm --save

然后就可以用你最初想写的默认导入了:

import PouchDB from 'pouchdb-esm';

private database: PouchDB.Database = new PouchDB(DATABASE_URL);

这个版本原生支持ES模块,类型提示也更友好,适合Angular 12+的新项目。

办法三:调整TypeScript配置

如果不想换包,也可以通过修改tsconfig.json让TypeScript允许对CommonJS模块使用默认导入:

{
  "compilerOptions": {
    // 允许合成默认导入
    "allowSyntheticDefaultImports": true,
    // 启用ES模块与CommonJS的互操作性
    "esModuleInterop": true,
    // 其他原有配置...
  }
}

修改后重启Angular开发服务器,import PouchDB from 'pouchdb';就能正常工作了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:48:56