Jos*_*ath 7 javascript android cordova
今天,我将Cordova-CLI从3.5版升级到4.0版.在此之后,我将项目的平台支持更新到最新版本的Android(因为它们现在单独更新).
从那时起,每次运行时都会出现此错误cordova run android,我收到以下错误:
未捕获的TypeError:无法设置在文件中只有getter的#的属性连接:///android_asset/www/cordova.js:512
因此,应用程序中的许多事件都无法运行,导致该应用程序无法运行.
我在更新Cordova后开始使用此功能,但仅限于非常旧的Android手机.作为一种解决方法,我在函数的内容周围放置一个try/catch块,在cordova.js中生成错误(clobber):
function clobber(obj, key, value) {
try {
exports.replaceHookForTesting(obj, key);
obj[key] = value;
// Getters can only be overridden by getters.
if (obj[key] !== value) {
utils.defineGetter(obj, key, function() {
return value;
});
}
}
catch (e){
console.error('clobber error '+e+', obj='+JSON.stringify(obj)+', key='+JSON.stringify(key)+', value='+JSON.stringify(value));
}
}
这显然不是最好的修复,但至少它让初始化完成,似乎不会影响我的应用程序.
我通过 CLI 4.1.2 获得的 Android cordova 3.6.4 遇到了同样的问题。我尝试合并问题的两个修复:CB-7868。第一个修复可以通过链接 CB-7868 看到,https://github.com/apache/cordova-js/pull/88。第二个修复是关于 CB-7868 的评论。
看 *************
function clobber(obj, key, value) {
exports.replaceHookForTesting(obj, key);
obj[key] = value;
var needsProperty = false;
try { obj[key] = value; }
catch (e) { needsProperty = true; }
// Getters can only be overridden by getters.
if (obj[key] !== value) {
if (needsProperty || obj[key] !== value) {
utils.defineGetter(obj, key, function() { return value; }
);
Run Code Online (Sandbox Code Playgroud)
有了这两个固定。Android API14(4.0)和API15(4.0.3)上没有报错。但是,我没有尝试相关插件是否可以工作。这意味着我不知道修复是否正确。
另外,我通过 CLI 4.1.2 获得了适用于 IOS 平台的 cordova 3.7.0。我可以看到修复https://github.com/apache/cordova-js/pull/88已应用于 3.7.0 JS。但是,功能,搞砸了,还没有上面修复。此外,Android cordova 没有可用的 3.7.0。Android平台仍然是3.6.4。
| 归档时间: |
|
| 查看次数: |
3546 次 |
| 最近记录: |