ionic framework导入模块,variables总是未定义的

我正在尝试导入我的ionic framework项目中的新function。 我执行了以下命令行:

$ ionic cordova插件添加cordova-plugin-uniquedeviceid

$ npm install –save @ ionic-native / unique-device-id

MyOwnService.ts文件中,我正在导入它:

 import { UniqueDeviceID } from '@ionic-native/unique-device-id'; import { Http } from '@angular/http'; 

然后在MyOwnService的构造函数中:

  constructor(http: Http, uniqueDeviceID: UniqueDeviceID) { console.log('Loading provider'); uniqueDeviceID.get() .then((uuid: any) => console.log("UID : " + uuid)) .catch((error: any) => console.log("UIDERR : " + error)); } 

uniqueDeviceID始终未定义。 另外,如果我在构造函数中添加一个额外的参数,http'不再工作。

我错过了什么吗? 我必须在app.module.ts添加一些东西吗?

我validation了dir存在于workspacedir/node_modules/@ionic-native/unique-device-id´

必须UniqueDeviceID是提供者的提供者吗?

是。 从Ionic-Native 3.x开始,所有离子本地服务都需要设置为提供者。 在这里检查。

 @NgModule({ ... providers: [ ... UniqueDeviceID ... ] ... }) export class AppModule { } 

其次,在访问插件时,需要使用this.platform.ready()如下所示:

  constructor(http: Http, uniqueDeviceID: UniqueDeviceID) { console.log('Loading provider'); this.platform.ready().then(() => { uniqueDeviceID.get() .then((uuid: any) => console.log("UID : " + uuid)) .catch((error: any) => console.log("UIDERR : " + error)); }); } 

此外,请确保您正在模拟器/设备中进行testing,因为在使用ionic serve时未启用cordova插件。