PouchDB 太多递归 - 远程连接上的 Stackoverflow

PouchDB too much recursion - Stackoverflow on remote connection

EIDT:这个问题是一个 Angular2 问题,应该在下一个 zone.js 更新中解决。有关临时修复,请参阅:https://github.com/angular/zone.js/issues/886 和 Стефан Спасов 答案。


我正在尝试将客户端 pouchDB 与服务器 couchDB 同步。

为了从我的 Angular2 应用程序访问 pouchDB,我编写了一个 javascript 接口:

var db;
var remoteDb;

function LocalDb() {
  db = new PouchDB('test', {storage:'persistent'});
};

function RemoteDb(url) {
  remoteDb = new PouchDB(url);
};

function sync() {
  db.sync(remoteDb);
};

function addTest() {
  var test = {
    title: 'ABC',
    completed: false
  };

  db.post(test);
};

为了便于阅读,我删除了所有回调。我通过 运行 npm install pouchdb

安装了 pouchdb

我还通过将 <script src="../node_modules/pouchdb/dist/pouchdb.min.js"></script> 添加到 index.html 来添加 pouchDB 源。

由于 404 错误,我以这种方式实现它,我将 pouchDb dist 文件夹复制到资产中并以这种方式实现 pouchDB <script src="assets/dist/pouchdb.min.js"></script>

所有 javascript 函数都通过按钮调用。

如果我按下 get localdb 和 get remotedb 按钮,一切正常。在我按下同步按钮的那一刻,我在 Firefox 上得到了很多 wrapFn@http://localhost:4200/polyfills.bundle.js:3614:1 和太多的递归错误。 Chrome 告诉我超出了最大调用堆栈大小。

如有任何帮助,我们将不胜感激。


编辑...好吧,现在我完全糊涂了...我通过创建一个静态 html 文件并在浏览器中使用完全相同的脚本 运行 来实现它:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>RemoteCouch</title>
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
    <h3>Hello World</h3>

    <script type="text/javascript" src="PATH/pouchdb.min.js"></script>
    <script>
        var db = new PouchDB('new');

        db.post({
          name: 'David',
          age: 69
        });

        db.changes().on('change', function() {
          console.log('Ch-Ch-Changes');
        });

        db.replicate.to('http://10.20.20.37:5984/new');
    </script>
</body>
</html>

我用 tapio/live-server 托管了这个文件并且它有效。这可能是一个 Angular 问题,或者我只是做错了什么。


为了再试一次,我创建了一个新项目,按照此处所述添加了 pouchdb https://github.com/nolanlawson/pouchdb-find/issues/201,并在纯 typescript 中进行了相同的测试,但正如预期的那样,错误仍然存​​在。

我遇到了同样的问题,显然 zone.js 有问题。应该会在下个版本解决。暂时使用 v.0.8.16 解决了我的问题。

"zone.js": "0.8.16"

这里引用了 github 问题:https://github.com/angular/zone.js/issues/886