我正在 WebStorm 6.0.2 中开发一个基于 Cordova 2.9.0 和 JQuery 2.0.3 的移动应用程序 - 全部在 OSX 上。生成的应用程序正在 Ripple 中进行测试。
我的问题:例如,如果我向控制台发送一些东西
console.log('TEST');
然后我在日志中收到错误:缺少 exec:Logger.logLevel。更糟糕的是,这个错误会在 Ripple 中显示一个弹出窗口('Logger.logLevel - 我们似乎遗漏了一些东西'),这使得调试非常困难。
如果我使用与早期版本的 Cordova (2.5.0) 完全相同的项目,则不会出现同样的错误。因此,问题似乎是 Cordova 特有的,并且没有使用其他任何软件。
我用谷歌搜索了一个解决方案,但奇怪的是,似乎没有其他人有这个问题......
编辑 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 中为假,在 2.9 中设置为真。
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