Phonegap 3.5.0 Cordova File API Error: cannot read property 'dataDirectory' of undefined

Phonegap 3.5.0 Cordova File API Error: cannot read property 'dataDirectory' of undefined

我们必须使用 PhoneGap Build 和 Apache Cordova 为 iOS 和 Android 构建应用程序。 Phonegap 版本为 3.5.0。我们想在互联网连接可用时更新应用程序。所以我们需要从在线服务器下载一些图像文件到本地文件系统到应用程序(iOS和Android)。 这是使用的示例 JavaScript 代码:

try{
    //The directory to store data
    var store;
    //Used for status updates
    var $status;
    //URL of our asset
    var assetURL = "https://raw.githubusercontent.com/cfjedimaster/Cordova-Examples/master/readme.md";
    //File name of our important data file we didn't ship with the app
    var fileName = "mydatafile.txt";
    //////////////////////
    alert("Checking for data file.");   
    //Check for the file. 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, onError);
    /////////////////////////////
} catch(e){
    alert(e.message);
}

function downloadAsset() {
    var fileTransfer = new FileTransfer();
    alert("About to start transfer");
    fileTransfer.download(assetURL, store + fileName, 
        function(entry) {
            alert("Success!");
            appStart();
        }, 
        function(err) {
            alert("Error!");
            console.dir(err);
            alert(err);
        });
}

//I'm only called when the file exists or has been downloaded.
function appStart() {
    // $status.innerHTML = "App ready!";
    alert( "App ready!");
}

function onFileSystemSuccess() {
    try{
        store = cordova.file.dataDirectory;
        //Check for the file. 
        window.resolveLocalFileSystemURL(store + fileName, appStart, downloadAsset);
    } catch(e){
        alert(e.message);
    }
}

function onError(){
    alert('error');
}

启动应用程序时,结果是 2 个警报:

好的,我们找到问题了! 在应用程序内部,我们使用下载的 cordova 插件版本包含了 cordova js 文件,该文件包含在应用程序的 js 文件夹中。 所以不是下面的:

<script type="text/javascript" src="js/cordova.js"></script> 

建议输入:

<script type="text/javascript" src="cordova.js"></script> 

并且 Phongap 将自己添加 cordova 文件。

这听起来可能很愚蠢,但对于所有 "cannot read property" 问题,您也可以尝试

rm -rf plugins
cordova/ionic platform remove xxx
cordova/ionic platform add xxx

它解决了我根本没有意义的问题。谁会想到插件本身会出错?