我如何将 pouchdb 与打字稿一起使用?

How do I use pouchdb with typescript?

我正在尝试将 pouchdb 与 Typescript 一起使用。我无法 link 到 pouchdb 模块。

import { PouchDB } from "pouchdb"

报告找不到模块 pouchdb,即使它在 node_modules。

我也找不到适合 pouchdb 的类型。

我设法通过使用

来识别模块
declare function require(a)

var PouchDB = require("pouchdb")

我放弃了类型检查,但至少我可以进步

我在 Ionic 中执行此操作,因此我可能缺少正确加载类型文件的步骤。

确保您的类型安装了:

npm install --save-dev @types/pouchdb

在数据服务导入袋的顶部,如下所示:

import * as PouchDB from 'pouchdb';

* 编辑 *

我不了解所有的事实,但这是我目前的理解。 Typescript >2.0 不再需要打字 我相信打字稿现在可以自动处理从 DefinitelyTyped 安装的类型文件。 DefinitelyTyped 是一个像 npm 一样保持最新的官方中央存储库。 即使我对这一切完全错了,DefinitelyTyped 仍然比打字更好,并且拥有更大的社区。

因为我刚遇到这个问题,对于 Angular 2 + Typescript,使用 PouchDB(使用 angular-cli)的正确方法是:

  1. ng new SOMENAME
  2. npm install --save pouchdb
  3. npm install --save-dev @types/pouchdb
  4. 在你的app.componentimport PouchDB from 'pouchdb';
  5. 在您的应用程序组件中 Class public db: any; 并初始化 this.db = new PouchDB('test'); // , {storage:'persistent'} not working in typescript without updating typings

参见 https://github.com/nolanlawson/pouchdb-find/issues/201

如果您在 windows 上安装软件包时出现 EPERM 错误,请使用 (f.e.) npm install --save pouchdb --no-optional 禁用警告。安装应该还是可以的。有关详细信息,请参阅 https://github.com/npm/npm/issues/17671

我在尝试导入 Angular 6 时遇到了同样的问题。

您的导入似乎没问题:

import PouchDB from 'pouchdb';
import PouchFind from 'pouchdb-find';
PouchDB.plugin(PouchFind);

您可能缺少的是您需要将此添加到您的 polyfills.ts 文件中:

(window as any).global = window;
(window as any).process = {};
(window as any).process.nextTick = setTimeout;
import PouchDB from 'pouchdb';

export abstract class PouchDBDatabase {
    private _database: PouchDB.Database<Sheet>;

    constructor(protected DATABASE_URL: string) {
        this._database = new PouchDB(this.DATABASE_URL);
    }
}

而且你可以使用 typescript + pouchDB :)