Android Phonegap 3.5.0 Cordova文件API错误:无法读取属性';数据目录';未定义的

Android Phonegap 3.5.0 Cordova文件API错误:无法读取属性';数据目录';未定义的,android,ios,file,cordova,Android,Ios,File,Cordova,我们必须使用PhoneGap build和Apache Cordova为iOS和Android构建一个应用程序。 Phonegap版本是3.5.0。我们希望在互联网连接可用时更新应用程序。因此,我们需要将一些图像文件从在线服务器下载到本地文件系统,并将其下载到应用程序(iOS和Android)中。 下面是使用的示例JavaScript代码: try{ //The directory to store data var store; //Used for status up

我们必须使用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个警报:

  • 无法读取未定义的
    //警报(e.message)的属性“dataDirectory”

  • 错误
    //警报('Error')

    • 好的,我们发现了问题! 在应用程序内部,我们使用下载版本的cordova插件包含cordova js文件,该插件包含在应用程序的
      js
      文件夹中。 因此,与以下内容不同:

      <script type="text/javascript" src="js/cordova.js"></script> 
      
      
      
      建议键入:

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

      Phongap将添加cordova文件本身

      这听起来可能很愚蠢,但对于所有类型的“无法读取属性”问题,您也可以尝试

      rm-rf插件

      cordova/ionic platform移除xxx

      cordova/ionic platform添加xxx


      它解决了我的问题,这真的毫无意义。谁会想到插件本身会出错呢?

      窗口。请求文件系统
      在启动deviceReady后执行吗?是的,它是在启动deviceReady事件后执行的。您是否为该平台正确安装了文件插件?您可能正在使用PhoneGap构建,还是仅使用普通Cordova CLI?文件插件是从config.xml文件中用于PhoneGap构建的。插件有时会出现需要修复的错误,此问题在许多环境中都会发生。。。