未捕获(承诺):错误:GooglePlus 没有提供者
Posted
技术标签:
【中文标题】未捕获(承诺):错误:GooglePlus 没有提供者【英文标题】:Uncaught (in promise): Error: No provider for GooglePlus 【发布时间】:2018-02-27 00:26:49 【问题描述】:我正在尝试使用cordova-plugin-googleplus
插件。
我已阅读其他帖子,说要将插件添加为提供程序,但尝试这样做无济于事。
当我尝试访问我的登录页面时,我收到堆栈跟踪错误:
运行时错误 !错误:没有 GooglePlus 的提供者!在 ReflectiveInjector_ 处的 injectionError (http://localhost:8100/build/vendor.js:1590:86) 在 noProviderError (http://localhost:8100/build/vendor.js:1628:12) 处。在 ReflectiveInjector 处的 throwOrNull (http://localhost:8100/build/vendor.js:3129:19)。在 ReflectiveInjector 处的 getByKeyDefault (http://localhost:8100/build/vendor.js:3168:25)。 em>getByKey (http://localhost:8100/build/vendor.js:3100:25) 在 ReflectiveInjector.get (http://localhost:8100/build/vendor.js:2969:21) 在 AppModuleInjector.get (ng:///AppModule/module.ngfactory.js:332:145) 在 AppModuleInjector.getInternal (ng: ///AppModule/module.ngfactory.js:615:44) 在 AppModuleInjector.NgModuleInjector.get (http://localhost:8100/build/vendor.js:3936:44) 在 LoginPageModuleInjector.NgModuleInjector.get (http://localhost:8100/build/vendor.js:3937:52)
堆栈跟踪
Error: Uncaught (in promise): Error: No provider for GooglePlus!
Error: No provider for GooglePlus!
at injectionError (http://localhost:8100/build/vendor.js:1590:86)
at noProviderError (http://localhost:8100/build/vendor.js:1628:12)
at ReflectiveInjector_._throwOrNull (http://localhost:8100/build/vendor.js:3129:19)
at ReflectiveInjector_._getByKeyDefault (http://localhost:8100/build/vendor.js:3168:25)
at ReflectiveInjector_._getByKey (http://localhost:8100/build/vendor.js:3100:25)
at ReflectiveInjector_.get (http://localhost:8100/build/vendor.js:2969:21)
at AppModuleInjector.get (ng:///AppModule/module.ngfactory.js:332:145)
at AppModuleInjector.getInternal (ng:///AppModule/module.ngfactory.js:615:44)
at AppModuleInjector.NgModuleInjector.get (http://localhost:8100/build/vendor.js:3936:44)
at LoginPageModuleInjector.NgModuleInjector.get (http://localhost:8100/build/vendor.js:3937:52)
at c (http://localhost:8100/build/polyfills.js:3:13535)
at Object.reject (http://localhost:8100/build/polyfills.js:3:12891)
at NavControllerBase._fireError (http://localhost:8100/build/vendor.js:45902:16)
at NavControllerBase._failed (http://localhost:8100/build/vendor.js:45890:14)
at http://localhost:8100/build/vendor.js:45945:59
at t.invoke (http://localhost:8100/build/polyfills.js:3:9283)
at Object.onInvoke (http://localhost:8100/build/vendor.js:4508:37)
at t.invoke (http://localhost:8100/build/polyfills.js:3:9223)
at r.run (http://localhost:8100/build/polyfills.js:3:4452)
at http://localhost:8100/build/polyfills.js:3:14076
平台详情
离子框架:3.6.1 Ionic 应用脚本:2.1.4 Angular 核心:4.1.3 Angular 编译器 CLI:4.1.3 节点:6.11.2 操作系统平台:Windows 10 导航平台:Win32 用户代理:Mozilla/5.0(Windows NT 10.0; WIN64; x64) AppleWebKit/537.36 (Khtml, 像 Gecko) Chrome/60.0.3112.113 Safari/537.36Login.ts
import Component from '@angular/core';
//import GooglePlus from '@ionic-native/google-plus';
import TranslateService from '@ngx-translate/core';
import IonicPage, NavController, ToastController from 'ionic-angular';
import User from '../../providers/providers';
import MainPage from '../pages';
@IonicPage()
@Component(
selector: 'page-login',
templateUrl: 'login.html'
)
export class LoginPage
// The account fields for the login form.
// If you're using the username field with or without email, make
// sure to add it to the type
account: username: string, password: string =
username: '',
password: ''
;
// Our translated text strings
private loginErrorString: string;
constructor(public navCtrl: NavController,
public user: User,
public toastCtrl: ToastController,
public translateService: TranslateService,
// private GooglePlus: GooglePlus
)
this.translateService.get('LOGIN_ERROR').subscribe((value) =>
this.loginErrorString = value;
)
// Attempt to login in through our User service
doLogin()
this.user.login_basic(this.account).subscribe((resp) =>
this.navCtrl.push(MainPage);
, (err) =>
this.navCtrl.push(MainPage);
// Unable to log in
let toast = this.toastCtrl.create(
message: this.loginErrorString,
duration: 3000,
position: 'top'
);
toast.present();
);
login.module.ts
import NgModule from '@angular/core';
import GooglePlus from '@ionic-native/google-plus';
import TranslateModule from '@ngx-translate/core';
import IonicPageModule from 'ionic-angular';
import LoginPage from './login';
@NgModule(
declarations: [
LoginPage,
],
imports: [
IonicPageModule.forChild(LoginPage),
TranslateModule.forChild()
],
exports: [
LoginPage
],
providers: [
GooglePlus,
],
)
export class LoginPageModule
【问题讨论】:
【参考方案1】:您需要将 GooglePlus-provider 添加到 AppModule (app.module.ts)
【讨论】:
我已经尝试过了,但它一直抛出错误。我卸载了所有 node_modules,并清除了我的 npm 缓存,然后开始了一个新项目并完全按照我之前所做的那样做,现在它可以工作了.... GAAAAAH!【参考方案2】:将 GooglePlus 添加到 the App.module.ts
对我有用
@NgModule(
...
providers: [
GooglePlus,
],
bootstrap: [AppComponent]
)
【讨论】:
【参考方案3】:如果是 Angular,GooglePlus
应该像这样导入(app.module.ts):
import GooglePlus from '@ionic-native/google-plus/ngx';
...
providers: [
GooglePlus,
]
【讨论】:
以上是关于未捕获(承诺):错误:GooglePlus 没有提供者的主要内容,如果未能解决你的问题,请参考以下文章
ERROR 错误:未捕获(承诺中):MyPlugin 没有 Web 实现
Angular2“没有 t 的提供者!”和未捕获(承诺):错误:DI 错误
Ionic - 如何正确导入 ViewController? - 未捕获(承诺):错误:没有 ViewController 的提供者