如何在 TypeScript 中使用 PouchDB?

8

我正在尝试使用Typescript和PouchDB。但是我无法链接到PouchDB模块。

import { PouchDB } from "pouchdb"

报告显示它找不到pouchdb模块,尽管它在node_modules中。我也找不到适当的pouchdb typings。
5个回答

4

我正在使用Ionic进行操作,因此可能会在正确加载类型文件方面漏掉一步。

请确保已安装您的类型:

npm install --save-dev @types/pouchdb

在导入数据服务的文件中,将其放置在pouch的顶部位置:

import * as PouchDB from 'pouchdb';

*编辑*

虽然我不了解所有的事实,但这是我目前的理解: 在TypeScript>2.0中,不再需要使用Typings。 我相信TypeScript现在会自动处理从DefinitelyTyped安装的类型文件。 DefinitelyTyped是一个官方的中央仓库,像npm一样保持最新。 即使我完全错了,DefinitelyTyped仍然比typings更好,并且有着更庞大的社区。


1
这让我受益匪浅,当其他方法都无法使用时,使用TypeScript和Angular2。 - Alex Szabo

3
因为我刚遇到这个问题,对于使用Angular 2+Typescript的PouchDB(使用angular-cli)的正确方法是:
  1. ng new SOMENAME
  2. npm install --save pouchdb
  3. npm install --save-dev @types/pouchdb
  4. 在你的app.component中,import PouchDB from 'pouchdb';
  5. 在你的App组件类中,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错误,请使用(例如)npm install --save pouchdb --no-optional禁用警告。安装仍应正常进行。有关更多信息,请参见https://github.com/npm/npm/issues/17671

3

我遇到了同样的问题,尝试将其导入到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;

这些 polyfill 为我解决了问题。 - Luke

1
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);
    }
}

auto-completion with typescript

使用typescript + pouchDB,您就可以轻松上手啦 :)


0

我通过使用以下方法成功地使模块被识别

declare function require(a)

var PouchDB = require("pouchdb")

我已经放弃了类型检查,但至少我可以取得进展。


1
你有什么好的解决方法吗?我也遇到了同样的问题,它有点工作但需要在新浏览器上重新加载页面才能显示数据。@LeRoy,我尝试了你的方法,但没有成功。很多人都遇到了同样的问题。我正在使用Angular2。 - Rodrigo Rubio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接