LoginSignup
1
1

More than 3 years have passed since last update.

CordovaでのTypeError “Cannot set property connection of #<Navigator>エラー回避方法

Last updated at Posted at 2015-03-05

Cordovaを使用したAndroidアプリ開発にて、Cordova自体のバグを回避する方法を会得したので、メモ。

まず、以下のエラーが発生。

TypeError “Cannot set property connection of #<Navigator>

上記エラーは、Android SDKのバージョンが、4.0.3以下で起きている。

また、タチの悪いことに、このエラーは、アプリの立ち上がりの際に発生するため、その後の処理が進まない。

で、詳しくエラーの原因を見ていると、以下のエラーメッセージが。。。

Uncaught TypeError: Cannot set property connection of # which has only a getter at file:///android_asset/www/cordova.js:512

これは、Cordova自体のバグで、自分のソースコードのバグではない。

そこで、とりあえず、以下のように、Try Catchで、エラーを回避する方法を採用し、事なきを得た。

対象は、以下の2ファイルの512行目あたり。

  1. platforms/android/assets/www/cordova.js
  2. platforms/android/platform_www/cordova.js
   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));
      }
    }

同様の現象で困っている方、よかったら参考にしてみてください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1