Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cordova: LocalFileSystem is not defined

I am not able to get the cordova file system to work. I have a project with the following dependencies:

com.ionic.keyboard 1.0.3 "Keyboard"
org.apache.cordova.console 0.2.12 "Console"
org.apache.cordova.device 0.2.13 "Device"
org.apache.cordova.file 1.3.2 "File"
org.apache.cordova.file-transfer 0.4.8 "File Transfer"

In app.js I define a dependency on a controller module:

angular.module('starter', ['ionic', 'controllers']);

The controller code is basically this:

angular.module('controllers', [])
  .controller('GalleryCtrl', function ($scope) {
    function success() {...}
    function error() {...}
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, error);
  }
}

What I then get is:

LocalFileSystem is not defined

Also, requestFileSystem is undefined. What could be the reason for this behavior?

I am using cordova 4.1.2 and ionic 1.3.1.

EDIT: This is the according html markup:

<body ng-app="starter" ng-controller="GalleryCtrl">
<ion-nav-view>
    <ion-slide-box id="slideBox">
        <ion-slide ng-repeat="..."> <!-- details omitted -->
        </ion-slide>
    </ion-slide-box>
</ion-nav-view>
</body>
like image 857
Bastian Avatar asked Jan 16 '15 13:01

Bastian


1 Answers

You simply aren't waiting for deviceReady event to be fired and thus the File plugin isn't loaded yet. Change

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, error);

to

document.addEventListener("deviceready", function() { 
  window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, error);
}, false);

The LocalFileSystem.PERSISTENT might be undefined even after that (has been for me while emulating etc.) but it can be replaced with 1 as it is just a constant.

like image 169
Roope Hakulinen Avatar answered Nov 06 '22 02:11

Roope Hakulinen