当我创建一个新的Ionic项目并安装OneSignal时,当我在智能手机上运行“ ionci cordova run android”命令时,总是会收到错误消息
vendor.js:2085 ERROR Error: Uncaught (in promise): TypeError: Object(...) is not a function
TypeError: Object(...) is not a function
at OneSignal.startInit (vendor.js:81052)
at main.js:185
at t.invoke (polyfills.js:3)
at Object.onInvoke (vendor.js:5396)
at t.invoke (polyfills.js:3)
at r.run (polyfills.js:3)
at polyfills.js:3
at t.invokeTask (polyfills.js:3)
at Object.onInvokeTask (vendor.js:5387)
at t.invokeTask (polyfills.js:3)
at c (polyfills.js:3)
at polyfills.js:3
at t.invokeTask (polyfills.js:3)
at Object.onInvokeTask (vendor.js:5387)
at t.invokeTask (polyfills.js:3)
at r.runTask (polyfills.js:3)
at o (polyfills.js:3)
at e.invokeTask (polyfills.js:3)
at i.isUsingGlobalCallback.invoke (polyfills.js:3)
at n (polyfills.js:3)
使用的命令行:
ionic cordova plugin add onesignal-cordova-plugin
npm install @ionic-native/onesignal
import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { SplashScreen } from '@ionic-native/splash-screen';
import { StatusBar } from '@ionic-native/status-bar';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { OneSignal } from '@ionic-native/onesignal/ngx';
@NgModule({
declarations: [
MyApp,
HomePage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage
],
providers: [
StatusBar,
SplashScreen,
OneSignal,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {}
import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { HomePage } from '../pages/home/home';
import {OneSignal} from "@ionic-native/onesignal/ngx";
@Component({
templateUrl: 'app.html'
})
export class MyApp {
rootPage:any = HomePage;
signal_app_id:string = 'xxxxxxxxxxxxx';
firebase_id:string = 'xxxxxxxxxx';
constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen, oneSignal: OneSignal) {
platform.ready().then(() => {
// Okay, so the platform is ready and our plugins are available.
// Here you can do any higher level native things you might need.
statusBar.styleDefault();
splashScreen.hide();
oneSignal.startInit(this.signal_app_id, this.firebase_id);
oneSignal.inFocusDisplaying(oneSignal.OSInFocusDisplayOption.InAppAlert);
oneSignal.handleNotificationReceived().subscribe((res) => {
// do something when notification is received
console.log(res);
});
oneSignal.handleNotificationOpened().subscribe((res) => {
// do something when a notification is opened
console.log(res);
});
oneSignal.endInit();
});
}
}
{
"name": "onesignal",
"version": "0.0.1",
"author": "Ionic Framework",
"homepage": "http://ionicframework.com/",
"private": true,
"scripts": {
"start": "ionic-app-scripts serve",
"clean": "ionic-app-scripts clean",
"build": "ionic-app-scripts build",
"lint": "ionic-app-scripts lint"
},
"dependencies": {
"@angular/animations": "5.2.11",
"@angular/common": "5.2.11",
"@angular/compiler": "5.2.11",
"@angular/compiler-cli": "5.2.11",
"@angular/core": "5.2.11",
"@angular/forms": "5.2.11",
"@angular/http": "5.2.11",
"@angular/platform-browser": "5.2.11",
"@angular/platform-browser-dynamic": "5.2.11",
"@ionic-native/core": "~4.18.0",
"@ionic-native/onesignal": "^5.4.0",
"@ionic-native/splash-screen": "~4.18.0",
"@ionic-native/status-bar": "~4.18.0",
"@ionic/storage": "2.2.0",
"cordova-android": "8.0.0",
"ionic-angular": "3.9.3",
"ionicons": "3.0.0",
"onesignal-cordova-plugin": "2.4.6",
"rxjs": "5.5.11",
"sw-toolbox": "3.6.0",
"zone.js": "0.8.29"
},
"devDependencies": {
"@ionic/app-scripts": "3.2.1",
"cordova-plugin-device": "^2.0.2",
"cordova-plugin-ionic-keyboard": "^2.1.3",
"cordova-plugin-ionic-webview": "^3.1.2",
"cordova-plugin-splashscreen": "^5.0.2",
"cordova-plugin-statusbar": "^2.4.2",
"cordova-plugin-whitelist": "^1.3.3",
"typescript": "~2.6.2"
},
"description": "An Ionic project",
"cordova": {
"plugins": {
"cordova-plugin-whitelist": {},
"cordova-plugin-statusbar": {},
"cordova-plugin-device": {},
"cordova-plugin-splashscreen": {},
"cordova-plugin-ionic-webview": {
"ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
},
"cordova-plugin-ionic-keyboard": {},
"onesignal-cordova-plugin": {}
},
"platforms": [
"android"
]
}
}
我从头开始尝试重新创建项目,但是每次都遇到相同的问题。
使用:
安装时ionic start onesginal blank
我收到这些警报:
npm WARN deprecated sw-toolbox@3.6.0: Please migrate to Workbox: https://developers.google.com/web/tools/workbox/guides/migrations/migrate-from-sw
npm WARN deprecated @angular/http@5.2.11: Switch to @angular/common/http - see https://angular.io/guide/http
npm WARN deprecated browserslist@2.11.3: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
当我安装npm install --save @ ionic-native / onesignal时,我还会收到以下警报:
found 1 vulnerabilities (1 high)
问题可能来自此吗?
谢谢!
PS:我使用的是Ionic 4