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
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
我还通过将 <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