无法将 PouchDB 导入 Angular 5.2.0 应用程序

Posted

技术标签:

【中文标题】无法将 PouchDB 导入 Angular 5.2.0 应用程序【英文标题】:Can't import PouchDB into Angular 5.2.0 application 【发布时间】:2018-09-22 06:07:07 【问题描述】:

我正在尝试将 PouchDB 导入我的 Angular 应用程序。我测试了不同的导入方法:

import PouchDB from 'pouchdb';
import * as PouchDB from 'pouchdb';

我像下面这样在服务中使用它:

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

如果我这样做:import PouchDB from 'pouchdb',我会收到以下错误消息:

src/app/core/pouchdb/pouchdb.service.ts(3,8):错误 TS1192:模块 '"PATH_OF_PROJECT/node_modules/@types/pouchdb/index"' 没有默认导出。

如果我这样做:import * as PouchDB from 'pouchdb',我会收到以下错误消息:

ERROR TypeError: PouchDB is not a constructor at new PouchDBService


这里是不同包的版本:

PouchDB:6.4.3 @types/pouchdb:6.3.2 Angular 包:5.2.0 @angular/cli : 1.7.4

提前感谢您的回答。

【问题讨论】:

您使用的是什么打字稿版本?我无法重现该问题 -> stackblitz.com/edit/angular-j8dk8h 我使用的是 typescript 2.5.3。唯一的区别是您使用 Angular 包的 5.2.8 版本 我将 stackblitz 更改为使用 5.2.0 和 typescript 2.5.3(尽管我无法验证它是否真的使用 2.5.3)并且它仍然有效。你最近更新了一些包吗?有时删除整个node_modules 文件夹并再次运行npm install 会有所帮助 这是一个新项目,所以我没有更新软件包。我已经完成了所有 node_modules 的重新安装。 不要将您的答案放在问题中——将其作为答案发布并接受。 【参考方案1】:

我遇到了同样的问题。但我通过将 PouchDb cdn 添加到我的 index.html 页面来解决它

<script src="//cdn.jsdelivr.net/pouchdb/6.4.3/pouchdb.min.js"></script>

然后在我这样在我的代码中使用它之后

declare const  PouchDB;

const _DB_ = new PouchDB('dbname');

【讨论】:

【参考方案2】:

tsconfig.jsoncompilerOptions 部分添加 "allowSyntheticDefaultImports": true

并使用

import PouchDB from 'pouchdb';

【讨论】:

以上是关于无法将 PouchDB 导入 Angular 5.2.0 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

无法导入“@angular/material”模块

pouchdb db.login 不是函数

PouchDB 和 SvelteKit

如何将新字体导入项目 - Angular 5

pouchdb 无法在 ios Safari 上运行

打字稿定义无法导入Angular2