3

私は、WebStorm 6.0.2 で、Cordova 2.9.0 と JQuery 2.0.3 に基づいて、すべて OSX でモバイル アプリケーションを開発しています。結果のアプリは Ripple でテストされています。

私の問題: たとえば、何かをコンソールに送信した場合

console.log('TEST');

次に、ログにエラーが表示されます: exec:Logger.logLevel がありません。さらに悪いことに、このエラーは Ripple のポップアップ ('Logger.logLevel - We think of some stuff') で表示され、デバッグが非常に困難になります。

以前のバージョンの Cordova (2.5.0) でまったく同じプロジェクトを使用すると、このまったく同じエラーは表示されません。したがって、問題は Cordova に固有のものであり、使用されている他のソフトウェアはないようです。

Googleで解決策を検索しましたが、不思議なことに、この問題を抱えている人は他にいないようです...

編集 1:
1 - iOS シミュレーターでプロジェクトを実行してもエラーは表示されません。したがって、問題は Ripple に固有のものです。
2 - Phonegap zip には、すべてのプラットフォーム用の特定の cordova.js ファイルが含まれています。cli を使用して新しい xcode プロジェクトを作成すると、デフォルトで iOS バージョンが使用されます。含まれている OSX バージョンを使用すると、Ripple にエラーは表示されません。しかし、(当然のことながら) OSX バージョンの cordova.js を iOS シミュレーターに使用することはできません。その結果、コルドバ ブリッジがないというエラーが発生します。

編集 2:
3 - 原因が見つかりました: var UseLogger は Cordova 2.6 では false で、2.9 では true に設定されています。
4 - 考えられる解決策: Cordova.js を編集し (あまり編集しないことをお勧めします)、var UseLogger を再度 false に設定します。

Ripple でエラーが発生するコードの下 (申し訳ありませんが、書式設定のためですが、stackoverflow により html コードの入力が非常に難しくなっています)。エラーを示すログの下にも。

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="format-detection" content="telephone=no" />
    <meta name="viewport" content="user-scalable=no, initial-scale=1, 
    maximum-scale=1, minimum-scale=1, width=device-width, height=device-height,
    target-densitydpi=device-dpi" />
    <script type="text/javascript" src="js/jquery-2.0.3.js"></script>
    <script type="text/javascript" src="js/jquery.mobile-1.3.1.js"></script>
    <script type="text/javascript" src="js/cordova-2.9.0.js"></script>
    <link rel="stylesheet" href="css/jquery.mobile-1.3.1.min.css" />
    <script type="text/javascript">
    document.addEventListener("deviceready", onDeviceReady, false);
    function onDeviceReady() {
    }
    </script>
    <title><!-- not used in visual app --></title>
</head>
    <body>
    <div data-role="page" id="pageIndex">
        <div data-theme="a" data-role="header" data-position="fixed">
            <h3>
            </h3>
        </div>
        <div data-role="content">
            <a data-role="button" onclick="console.log('TEST');" href="#">
                Console test
            </a>
        </div>
        <div data-role="footer" class="ui-bar" data-position="fixed">
            <a data-role="button" href="#" data-icon="info">Info</a>
            <a data-role="button" href="#" data-icon="gear">Options</a>
        </div>
    </div>
    </body>
</html>
Viewport target-densitydpi is not supported.  index.html:6
Failed to load resource: the server responded with a status of 404 (Not Found)    http://localhost:63342/Keep/cordova_plugins.json:0
Failed to load resource: the server responded with a status of 404 (Not Found)    http://localhost:63342/!gap_exec?1373900241256:0
Ripple :: Environment Warming Up (Tea. Earl Gray. Hot.)   js/cordova-2.9.0.js:5638
cordova :: Initialization Finished (Make it so.)  js/cordova-2.9.0.js:5638
Failed to load resource: the server responded with a status of 404 (Not Found)    http://localhost:63342/Keep/icon.png:0
Viewport target-densitydpi is not supported.  index.html:6
Failed to load resource: the server responded with a status of 404 (Not Found)    http://localhost:63342/Keep/cordova_plugins.json:0
Access made to deprecated symbol: navigator.network.connection. null  js/cordova-2.9.0.js:5638

// if the button is clicked, the log below is the result

missing exec:Logger.logLevel  js/cordova-2.9.0.js:5638
LOG,TEST  js/cordova-2.9.0.js:5638
TypeError: Cannot call method 'logLevel' of undefined js/cordova-2.9.0.js:5638
TypeError: Cannot call method 'logLevel' of undefined
    at module.exports.exec
    at Object.logger.logLevel (http://localhost:63342/Keep/js/cordova-2.9.0.js:5626:9)
    at logWithArgs (http://localhost:63342/Keep/js/cordova-2.9.0.js:5598:21)
    at Object.logger.log (http://localhost:63342/Keep/js/cordova-2.9.0.js:5561:36)
    at HTMLAnchorElement.onclick (http://localhost:63342/Keep/index.html:29:164)  js/cordova-2.9.0.js:5638
Logger    js/cordova-2.9.0.js:5638
logLevel  js/cordova-2.9.0.js:5638
TEST  js/cordova-2.9.0.js:5638
deviceready has not fired after 5 seconds.    js/cordova-2.9.0.js:5638
Channel not fired: onCordovaConnectionReady   js/cordova-2.9.0.js:5638
Channel not fired: onCordovaInfoReady js/cordova-2.9.0.js:5638
4

2 に答える 2

0

リップルでデバッグするのと同じ問題に遭遇しました。私の解決策は、ripple を使用するときに osx 用に cordova.js をロードし、iOS シミュレーターで実行するときに ios 用に cordova.js をロードすることです (xcode プロジェクトを変更する必要はありません)。この回避策でも、(requirejs を使用して) 構成ファイルを手動で編集する必要がありますが、cordova.js ファイル自体を編集するよりも望ましいようです。

于 2013-07-17T21:19:36.943 に答える