TheCocoaProject / cordova-plugin-nativestorage

Cordova plugin: Native storage of variables in Android, iOS and Windows
http://thecocoaproject.github.io/
Apache License 2.0
292 stars 106 forks source link

Uncaught TypeError: error is not a function #48

Closed kernja closed 7 years ago

kernja commented 8 years ago

Hey,

Using Cordova on Windows 10/Browser. Getting a "Uncaught TypeError: error is not a function" error at mainHandle.js:87.

The line throwing the error is: error("The type isn't supported or isn't been recognized");

I'm using Windows 10, Chrome 54, JQuery 3.1.1, Cordova 6.3.1, Android 5.2.2, Browser 4.1.0

Adding a generic function error(e) { console.log(e); } doesn't work :/

GillesC commented 8 years ago

@anwserman Please provide the code you're using where the error is thrown. And maybe put some more information of the object your trying to save. Check for instance its type (via typeof).

GillesC commented 8 years ago

@anwserman I think you problem can be simular to this issue.

Marvin256 commented 8 years ago

Hello

I'm having the same issue. Any workaround?

GillesC commented 8 years ago

Hello Marvin, have you seen my comment above yours? There I reference another issue, which I think is the same one as you're experiencing. And please provide more info. I'm unable to provide aid when I've nothing (or almost nothing) to work with.

Marvin256 commented 8 years ago

Hey Gilles

Thanks for your answer. Yes I've seen the other issue but didn't found any answer to the problem. Here's a part of the code generating the issue:

var app = {
    initialize: function () {
        this.bindEvents();
    },
    bindEvents: function () {
        document.addEventListener('deviceready', this.onDeviceReady, false);
    },
    onDeviceReady: function () {
        // On récupère le root de l'app sur PhoneGap
        var documentsDirectoryPath = decodeURIComponent(window.location.href);
        appRoot = documentsDirectoryPath.substring(0, documentsDirectoryPath.indexOf("index.html"));
        // On cache la barre de status
        StatusBar.hide();
        NativeStorage.getItem('role', this.getSuccess, this.getError);
        NativeStorage.getItem('airport', this.getSuccess, this.getError);
    },
    setSuccess: function (obj) {
        console.log(obj.name);
    },
    setError: function (error) {
        console.log(error.code);
        if (error.exception !== "") console.log(error.exception);
    },
    getSuccess: function (obj) {
        console.log(obj.name);
    },
    getError: function (error) {
        console.log(error.code);
        if (error.exception !== "") console.log(error.exception);
    },
    removeSuccess: function () {
        console.log("Removed");
    },
    removeError: function (error) {
        console.log(error.code);
        if (error.exception !== "") console.log(error.exception);
    }
};

As you can see it's almost a copy&paste from your exemple. I didn't find any detailed documentation about your plugin so I'm little confuse with your code. I'm compiling on Phongap Build.

Thank you a lot for your help.

Regards

Marvin256 commented 8 years ago

mmm, I'm trying to understand your code but something looks weird to me. Can I use getItem & setItem with a string? Is there public methods like getString & setString? Do you have any documentation?

GillesC commented 8 years ago

@Marvin256

Via the getItem you can store any object or data type that can be parsed via JSON. Hence, storing strings isn't a problem. This is also documented here. If you are more familiar with compiled languages such as Java or C, look at the type-based storage API (< v2.0) here. BTW as described in the README: more documentation can be found in the wiki page.

When I look at your code I don't see any storing (setItem). So you should first store some values, prior to retrieving them.

EDIT: So I suggest first reading the documentation before asking "Do you have any documentation?". Because everything you've asked, is clearly in the documentation, with exception of the error.

alokrajiv commented 7 years ago

Made a commit 11cbc5a1c76539d34161a1d17728a92bca6f6f96 to silence this error.

Effectively it replaces error parameter at the JavaScript level with a dummy empty function if nothing was passed. Effectively making error parameter now option.

@GillesC Could you update the docs if possible.