Uncaught TypeError: Object (...) не является функцией для ссылки на плагин Cordova - PullRequest
1 голос
/ 09 мая 2019

Я создал плагин Cordova с помощью Plugman и пытаюсь использовать его в моем ионном приложении. Но я получаю Uncaught TypeError: Object (...) не является функцией ... Я не могу понять, что это за ошибка.

Провел некоторое исследование и обнаружил, что обновление родной ионной версии может работать, но в моем случае это не сработало.

Я пытаюсь создать службу оболочки для плагина следующим образом:

    import { Injectable } from '@angular/core';
    import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';

    @Plugin({
      pluginName: 'mathcalculator',
      plugin: 'cordova.plugin.mathcalculator',
      pluginRef: 'MathCalculator', 
      repo: 'https://github.com/dkandel/MathCalculator.git', 
      platforms: ['Android']
    })

    @Injectable({
     providedIn: 'root'
    })
    export class MathService extends IonicNativePlugin {

      @Cordova()
      add(args: any): Promise<any> {
       return;
      }
    }

Услуга была добавлена ​​к поставщикам в файле модуля приложения. У меня также есть плагин в моей папке плагинов. Когда я пытаюсь запустить приложение, я продолжаю получать объект (...) не является функцией, и ошибка указывает на @Cordova () в моем служебном файле.

Может кто-нибудь помочь мне, пожалуйста?

1 Ответ

1 голос
/ 09 мая 2019

Сегодня я столкнулся с той же проблемой и совершил ту же ошибку, что и вы.

Проблема в том, что вы используете декораторы @Plugin и @Cordova непосредственно в службе Angular, а не в тех, где эти декораторы предназначены для использования. Многие из уроков, которые я смог найти по теме написания оболочки-плагина для Cordova, родной для Ionic, не очень ясно дали понять.

Я решил проблему путем клонирования ионно-нативного репо и следуя этим инструкциям для создания плагина. При его создании также создается каталог ngx с другой версией плагина, которую вы должны импортировать, если хотите, чтобы плагин работал с Observables вместо Promises.

Как только он будет собран, скопируйте его в каталог node_modules / @ ionic-native вашего проекта. Затем вы можете добавить его в модуль в своем проекте, добавить его в службу или компонент и использовать его так же, как и любой другой встроенный плагин.

...