2014-05-10 63 views
1

我正在更新我的Cordova應用程序,該應用程序是在1月份最後發佈的 - 在對File插件進行重大更改之前。所有工作都很好(舊風格),但是當在iOS模擬器或iOS設備(iOS 7.1)上運行時,我的window.requestFileSystem調用將永遠不會返回(既不失敗也不成功)。對於永久和臨時文件系統都會發生此問題。requestFileSystem從未在iOS上返回科爾多瓦3.4

我猜我有一些配置問題。不過,我嘗試了一切都無濟於事。添加控制檯消息我發現我的代碼中的window.requestFileSystem調用會在插件的requestFileSystem.js中調用requestFileSystem。我還發現CDVFile方法全部被調用(按照以下順序:initWithWebView,pluginInitialize,getExtraFileSystemsPreference,getAvailableFileSystems,registerExtraFileSystems(寄存器庫,庫 - 異步,文檔,文檔-nosync,緩存,捆綁,根))。

但是,requestFileSystem.js中的exec調用「requestFileSystem」根本不會返回,也不會執行CDVFile中的方法。 (請注意,這是在設備準備就緒事件返回之後。)

關於什麼可能是錯誤的或者如何在此時進一步調試的任何建議?

+0

您使用的是什麼版本的File插件? –

+0

使用最新發布的版本(1.1.0) – dwhogg

+0

更新:一般仍在努力解決文件系統問題。但是,requestFileSystem永遠不會返回的問題不會發生,如果我立即在deviceready之後調用它(而不是稍後),則不會發生。我的應用程序正在使用jQuery的移動和骨幹 - 以及其他各種庫 - 但此時不知道可能會導致此行爲。 – dwhogg

回答

0

原來這裏遇到的問題與文件系統插件沒有直接關係。 requestFileSystem(或其他文件插件調用像上面提到的getDirectory)永遠不會返回的原因是最終cordova.exec調用永遠不會返回 - 這會在控制檯插件(org.apache.cordova.console)加載後的任何時候發生(然後任何後續的cordova.exec調用將會掛起)。刪除控制檯插件解決了我的問題。

爲什麼刪除控制檯插件是我不太確定的修復。但是,我確實有自己的logger.js,它可能會干擾控制檯插件?希望這是一個特定於我的代碼的問題。不知道爲什麼這只是iOS上的問題,而不是Android上的問題。

+0

我知道科爾多瓦控制檯插件必須在iOS/Android上做不同的事情,所以這可能是您看到不同行爲的原因。如果你可以在你的代碼中正確地複製導致問題的原因,也許你應該提交一個問題,這樣插件可以更好地屏蔽這樣的事情(或者至少它可以讓人知道什麼*不可*)。 –