У меня есть приложение, которое до этой недели работало нормально, и я понятия не имею, что внезапно изменилось.

Рассмотрим следующий код. Первый "console.log" выводится правильно, но НИ ОДИН из остальных вообще ничего не выводит.

console.log('requesting file system');
try { 
  requestFileSystem(1, 1024*1024, function(fs) { 
    console.log('file system received. requesting root directory');
    fs.root.getDirectory( options.name, {create:true}, function( directory ) { 
      console.log('root directory received');
      filesystems[options.name] = directory;
      console.log('calling callback');
      if ( callback ) me.fn( me.name, callback ).call( me, me );
      console.log('callback called');
    }, function(e) { 
      console.log('error handler 1');
      console.log(e);
    });
  }, function(e) { 
    console.log('error handler 2');
    console.log(e);
  });
}
catch(e) { 
  console.log('error handler 3');
  console.log(e);
}

Есть идеи, что искать?

0
Kae Verens 10 Апр 2014 в 15:16

2 ответа

Лучший ответ

Эта проблема, с которой сталкиваются многие из них, происходит из-за ошибки в Cordova nativetoJSbridge. Он был отмечен как исправленный в 3.6.0, но никогда не работал в этой версии. Пара версий выше конкретной версии работает.

Шаги по исправлению этого в вашем существующем проекте, если вы используете eclipse.

  1. Установите последнюю версию cordova с помощью npm и создайте новый проект с помощью CLI.
  2. Добавьте файл api в свой новый проект с помощью команды cordova plugin add.
  3. После того, как плагин добавлен в ваш проект, скопируйте последние java-источники Cordova, а также ваш файл api в свой старый проект.
  4. Кроме того, скопируйте исходный код javascript плагина api, а также сравните и объедините cordova.js.
  5. Теперь компиляция вашего старого проекта должна исправить проблему window.requestFileSystem.

Если вы используете CLI, даже лучше. создайте новый проект из интерфейса командной строки и скопируйте старые источники проекта в новый проект и добавьте плагины с помощью интерфейса командной строки или обновите проект с помощью интерфейса командной строки.

В качестве побочного примечания, эта ошибка существовала некоторое время, и проблема, похоже, заключалась в NativeToJsMessageQueue

https://issues.apache.org/jira/browse/CB-6761

Хотя из-за ошибки она считается нерешенной, она исправлена ​​в последней версии выше 3.6.x.

0
Andrews 23 Окт 2014 в 09:26

Я «решил» эту проблему, запустив новое приложение, скопировав каталог www и переустановив все плагины из сломанного приложения.

Я не знаю, в чем была проблема, но теперь эта чистая установка работает нормально.

1
Kae Verens 10 Апр 2014 в 13:10