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
我还通过向index.html添加<script src="../node_modules/pouchdb/dist/pouchdb.min.js"></script>
添加了pouchDB源代码。
由于我通过实现它获得的404错误,我将pouchDb dist文件夹复制到资产并以<script src="assets/dist/pouchdb.min.js"></script>
按钮调用所有javascript函数。
如果我按下get localdb和get remotedb按钮everythig工作。目前我按下同步按钮我得到了很多wrapFn@http://localhost:4200/polyfills.bundle.js:3614:1
并且在firefox上出现了太多的递归错误。 Chrome告诉我超出了最大调用堆栈大小。
任何帮助都将不胜感激。
编辑...好了,现在我完全糊涂了......我通过创建一个静态html文件并在浏览器中运行它并使用EXCACTLY相同的脚本来实现它:
<!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托管此文件,它可以正常工作。这可能是一个角度问题,或者我只是做错了什么。
再试一次我创建了一个新项目,添加了像这里描述的pouchdb https://github.com/nolanlawson/pouchdb-find/issues/201并在纯打字稿中进行了相同的测试,但是由于被怀疑错误仍然存在。
答案 0 :(得分:1)
我遇到了同样的问题,显然这是zone.js的一个问题。应该在下一个版本中解决。暂时使用v.0.8.16解决了我的问题。
"zone.js": "0.8.16"
以下是对github问题的引用:https://github.com/angular/zone.js/issues/886