【问题标题】:Cannot load PouchDB in Adobe AIR无法在 Adob​​e AIR 中加载 PouchDB
【发布时间】:2015-07-17 03:44:18
【问题描述】:

我已经让 PouchDB 在 Chrome、Firefox 和 Phone Gap 中工作,但我似乎无法让它在 Adob​​e Air SDK 中加载。我已经尝试过 Adob​​e Air SDK 的 15 和 18 版、PouchDB 的 3.5 和 3.6 版以及 adl 和 adt,它甚至似乎根本没有实例化数据库对象,当然也没有连接到 Cloudant。

我需要另一个库吗?还是它在 Adob​​e Air 中不起作用?

这是我正在使用的代码及其创建的警报。

谢谢!

最好的,

=================================

<!DOCTYPE html>
<html class="ui-mobile">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<title>Not Working</title>
<script src="cordova.js"></script>
<script src="phoneincludes/jquery.js"></script>
<script src="phoneincludes/es6-promise.min.js"></script>
<script src="phoneincludes/es5-shim.min.js"></script>
<script src="phoneincludes/pouchdb.min.js"></script>
<script>
var db, remotedb;
var err = function(err) { alert(err) };
var changes = function(change) {
    $('body').append('<div>' + JSON.stringify(change.doc,null,4) + '</div>');
};

function dispatch(fn, args) {
    fn = (typeof fn == "function") ? fn : window[fn];
    return fn.apply(this, args || []);
}

$(function() {
    db = new PouchDB('todo');
    alert(JSON.stringify(db,null,4));
    remotedb = new PouchDB('https://user:pass@domain.cloudant.com/todo');
    db.replicate.from(remotedb, {retry: true, filter: 'app/nowhammies'})
        .on('complete', function() {
            db.allDocs({include_docs: true}).then(function(docs) {
                for (var row in docs.rows) {
                    dispatch(changes, [docs.rows[row]]);
                }
            });
        }).on('error', err);
});
</script>
</head>
<body>
</body>
</html>

========================================

{
    "__opts": {},
    "prefix": "_pouch_",
    "_events": {},
    "taskqueue": {
        "isReady": false,
        "failed": {
            "message": "Adapter is missing",
            "code": 404,
            "line": 9,
            "expressionBeginOffset": 64839,
            "expressionEndOffset": 64891,
            "sourceId": 567532592,
            "sourceURL": "app:/phoneincludes/pouchdb.min.js"
        },
        "queue": []
    },
    "_db_name": "todo"
}

========================================

感谢您的回答,@JesseMonroy650。

奇怪的是,似乎从未在 Adob​​e Air 中触发 deviceready 事件。例如,此代码输出“零”而不是“一”。 Adobe Air 只是一个与 PhoneGap 完全不同的系统吗?我真的很难过为什么这会在一个中起作用,而在另一个中不起作用......

========================================

<!DOCTYPE html>
<html>
<head>
<script src="jquery.js"></script>
<script>
function onLoad() {
    $('#output').html('zero');
    document.addEventListener("deviceready", onDeviceReady, false);
}

function onDeviceReady() {
    $('#output').html('one');
}
</script>
</head>
<body onload="onLoad()">
<div id="output">hello</div>
</body>
</html>

【问题讨论】:

    标签: cordova air couchdb phonegap-build pouchdb


    【解决方案1】:

    AFAIK PouchDB 从未支持 Adob​​e Air。

    【讨论】:

      【解决方案2】:

      您必须等到 deviceready 才能使用设备上的任何服务。这包括第三方库。

      设备就绪
      http://docs.phonegap.com/en/3.3.0/cordova_events_events.md.html#deviceready

      处理 PhoneGap 设备就绪事件
      https://www.youtube.com/watch?v=3CHR8vK3sIQ

      仅供参考 - Cordova 事件必须在 deviceReady 之后运行
      http://www.raymondcamden.com/2015/07/15/fyi-cordova-events-must-be-run-after-deviceready

      杰西

      【讨论】:

      • @JesseMontroy650,它不允许我在评论中添加代码,所以我已经在原始问题中回答了。谢谢!
      • AdobeAir 和 Phonegap 是两 (2) 种不同的产品。我对 Air 了解不多,但 Phonegap 是一个有很多缺点的开源项目。但 phonegap 是移动领域中较好的开源项目之一。我的猜测是你想要 pouchDB。我会与该支持小组交谈,而不是与 stackoverflow 交谈。 Stack 似乎是不得已的论坛类型。质量相对较低,整个系统有点破解。再一次,空白是如此之大,我明白为什么它很受欢迎。 groups.google.com/forum/#!forum/pouchdb
      猜你喜欢
      • 1970-01-01
      • 2019-08-13
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 2022-06-22
      • 2010-09-25
      • 2013-07-04
      相关资源
      最近更新 更多