无法解析 TranslateService 的所有参数:(?, ?, ?, ?, ?, [object Object]
Can't resolve all parameters for TranslateService: (?, ?, ?, ?, ?, [object Object]
自昨天以来,我无法再在浏览器中测试我的 ionic 3 应用程序,因为我收到以下与 TranslateService 相关的错误。这似乎与我的代码无关,因为当我切换到以前的版本时我也遇到了同样的问题,尽管当时它运行良好。我尝试重新安装节点模块,但仍然没有成功。你知道我应该怎么做才能解决这个问题吗?谢谢!
ERROR Error: Uncaught (in promise): Error: Can't resolve all
parameters for TranslateService: (?, ?, ?, ?, ?, [object Object],
[object Object]). Error: Can't resolve all parameters for
TranslateService: (?, ?, ?, ?, ?, [object Object], [object Object]).
at syntaxError (compiler.js:466)
at CompileMetadataResolver._getDependenciesMetadata (compiler.js:15544)
at CompileMetadataResolver._getTypeMetadata (compiler.js:15379)
at CompileMetadataResolver._getInjectableMetadata (compiler.js:15359)
at CompileMetadataResolver.getProviderMetadata (compiler.js:15719)
at compiler.js:15630
at Array.forEach ()
at CompileMetadataResolver._getProvidersMetadata (compiler.js:15590)
at compiler.js:15080
at Array.forEach ()
at syntaxError (compiler.js:466)
at CompileMetadataResolver._getDependenciesMetadata (compiler.js:15544)
at CompileMetadataResolver._getTypeMetadata (compiler.js:15379)
at CompileMetadataResolver._getInjectableMetadata (compiler.js:15359)
at CompileMetadataResolver.getProviderMetadata (compiler.js:15719)
at compiler.js:15630
at Array.forEach ()
at CompileMetadataResolver._getProvidersMetadata (compiler.js:15590)
at compiler.js:15080
at Array.forEach ()
at c (polyfills.js:3)
at c (polyfills.js:3)
at polyfills.js:3
at t.invokeTask (polyfills.js:3)
at Object.onInvokeTask (core.js:4617)
at t.invokeTask (polyfills.js:3)
at r.runTask (polyfills.js:3)
at o (polyfills.js:3)
从我的 package.json 我可以看到:@ngx-translate/core": "^9.1.1" 和 @ngx-translate/http-loader": " ^2.0.1
我的离子信息
@ionic/cli-utils : 1.19.2
ionic (Ionic CLI) : 3.20.0
global packages:
cordova (Cordova CLI) : 8.0.0
local packages:
@ionic/app-scripts : 3.1.0
Cordova Platforms : android 7.1.0 browser 5.0.3 ios 4.4.0
Ionic Framework : ionic-angular 3.9.2
System:
Android SDK Tools : 25.2.5
ios-deploy : 1.9.2
Node : v6.10.0
npm : 3.10.10
OS : macOS High Sierra
Xcode : Xcode 9.3.1 Build version 9E501
Environment Variables:
ANDROID_HOME : /usr/local/Cellar/android-sdk/24.1.2/
Misc:
backend : pro
我也有相同的版本@ngx-translate/core": "^9.1.1" 和@ngx-translate/http-loader": "^2.0.1"
您可以使用我的 package.json 检查 angular 依赖项和 ionic-app 脚本版本。它适用于那些版本。
"dependencies": {
"@angular/animations": "5.2.9",
"@angular/common": "5.2.9",
"@angular/compiler": "5.2.9",
"@angular/compiler-cli": "5.2.9",
"@angular/core": "^5.2.9",
"@angular/forms": "5.2.9",
"@angular/http": "5.2.0",
"@angular/platform-browser": "^5.2.9",
"@angular/platform-browser-dynamic": "5.2.9",
"@ionic-native/app-version": "^4.7.0",
"@ionic-native/ble": "^4.7.0",
"@ionic-native/core": "4.6.0",
"@ionic-native/globalization": "^4.7.0",
"@ionic-native/keyboard": "^4.7.0",
"@ionic-native/network": "^4.7.0",
"@ionic-native/screen-orientation": "^4.7.0",
"@ionic-native/splash-screen": "4.6.0",
"@ionic-native/status-bar": "4.6.0",
"@ionic/storage": "2.1.3",
"@ngx-translate/core": "^9.1.1",
"@ngx-translate/http-loader": "^2.0.1",
"cordova-android": "6.3.0",
"cordova-ios": "4.5.4",
"cordova-plugin-app-version": "^0.1.9",
"cordova-plugin-compat": "^1.2.0",
"cordova-plugin-device": "^2.0.1",
"cordova-plugin-globalization": "^1.0.9",
"cordova-plugin-ionic-keyboard": "^2.0.5",
"cordova-plugin-ionic-webview": "^1.1.19",
"cordova-plugin-screen-orientation": "^3.0.1",
"cordova-plugin-splashscreen": "^5.0.2",
"cordova-plugin-statusbar": "^2.4.1",
"cordova-plugin-whitelist": "^1.3.3",
"es6-promise-plugin": "^4.2.2",
"ionic-angular": "3.9.2",
"ionicons": "3.0.0",
"moment": "^2.22.1",
"moment-timezone": "^0.5.16",
"rxjs": "5.5.8",
"sw-toolbox": "3.6.0",
"zone.js": "0.8.20"
},
"devDependencies": {
"@ionic/app-scripts": "3.1.8",
"typescript": "~2.6.2",
}
应用程序模块:app.module.ts
import {ErrorHandler, NgModule} from '@angular/core';
import {IonicApp, IonicErrorHandler, IonicModule} from 'ionic-angular';
// import ngx-translate and the http loader
import {TranslateLoader, TranslateModule} from '@ngx-translate/core';
import {TranslateHttpLoader} from '@ngx-translate/http-loader';
import {HttpClient, HttpClientModule} from '@angular/common/http';
import {Globalization} from '@ionic-native/globalization';
/****************************Pages*******************************/
import {myApp} from './app.component';
import {SignUp} from '../pages/sign_up/sign-up.component';
import {GlobalizationService} from '../providers/common_service/globalisation.service';
// required for AOT compilation
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
@NgModule({
declarations: [
myApp,
],
imports: [
IonicModule.forRoot(myApp, {
mode: 'ios'
}),
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
})
],
bootstrap: [IonicApp],
entryComponents: [
myApp,
SignUp,
],
providers: [
Globalization,
GlobalizationService,
//TODO TEST
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {
}
应用程序组件文件:app.component.ts
import {Component, ViewChild} from '@angular/core';
import {Platform} from 'ionic-angular';
import {GlobalizationService} from '../providers/common_service/globalisation.service';
import {SignUp} from '../pages/sign_up/sign-up.component';
@Component({
templateUrl: 'app.html'
})
export class myApp {
@ViewChild(Nav) nav: Nav;
rootPage: any = SignUp;
pages: Array<{ title: string, component: any }>;
constructor(private globalizationService: GlobalizationService) {
}
protected initializeApp() {
this.globalizationService.initializeLocalization();
this.platform.ready().then(() => {
//Function initializeLocalization can also call here
});
}
}
全球化服务:globalisation.service
import { Injectable } from '@angular/core';
import { Globalization } from '@ionic-native/globalization';
import { TranslateService } from '@ngx-translate/core';
@Injectable()
export class GlobalizationService {
public userLang:any;
constructor(private globalization: Globalization,public translateService: TranslateService){}
/*
* Function to initialize localization for application
*/
public initializeLocalization(){
console.log('in init location');
this.globalization.getPreferredLanguage()
.then(res => {
console.log(res);
if(res.value=="fr-FR"){
this.userLang="fr";
this.useLanguage(this.userLang);
}
else{
this.translateService.setDefaultLang('en');
}
})
.catch(e => {
console.log(e)
this.translateService.setDefaultLang('en');
});
}
/**
* Function to set language for application
* @param language: Language to use
*/
public useLanguage(language: string) {
this.translateService.use(language);
}
}
今天我们的一个工作站遇到了同样的问题,它与其他工作站共享同一个 node_module 文件夹!
该错误似乎与最新的 Chrome 更新版本或生成的 ts Source Maps 或两者有关,因为当我们 运行 我们的应用程序在其他浏览器的开发模式下工作正常......
快速修复是进行生产构建并将其加载到 Chrome ,然后在开发模式下重试。
至少这对我们有用,也许对其他人也有用。
自昨天以来,我无法再在浏览器中测试我的 ionic 3 应用程序,因为我收到以下与 TranslateService 相关的错误。这似乎与我的代码无关,因为当我切换到以前的版本时我也遇到了同样的问题,尽管当时它运行良好。我尝试重新安装节点模块,但仍然没有成功。你知道我应该怎么做才能解决这个问题吗?谢谢!
ERROR Error: Uncaught (in promise): Error: Can't resolve all parameters for TranslateService: (?, ?, ?, ?, ?, [object Object], [object Object]). Error: Can't resolve all parameters for TranslateService: (?, ?, ?, ?, ?, [object Object], [object Object]). at syntaxError (compiler.js:466) at CompileMetadataResolver._getDependenciesMetadata (compiler.js:15544) at CompileMetadataResolver._getTypeMetadata (compiler.js:15379) at CompileMetadataResolver._getInjectableMetadata (compiler.js:15359) at CompileMetadataResolver.getProviderMetadata (compiler.js:15719) at compiler.js:15630 at Array.forEach () at CompileMetadataResolver._getProvidersMetadata (compiler.js:15590) at compiler.js:15080 at Array.forEach () at syntaxError (compiler.js:466) at CompileMetadataResolver._getDependenciesMetadata (compiler.js:15544) at CompileMetadataResolver._getTypeMetadata (compiler.js:15379) at CompileMetadataResolver._getInjectableMetadata (compiler.js:15359) at CompileMetadataResolver.getProviderMetadata (compiler.js:15719) at compiler.js:15630 at Array.forEach () at CompileMetadataResolver._getProvidersMetadata (compiler.js:15590) at compiler.js:15080 at Array.forEach () at c (polyfills.js:3) at c (polyfills.js:3) at polyfills.js:3 at t.invokeTask (polyfills.js:3) at Object.onInvokeTask (core.js:4617) at t.invokeTask (polyfills.js:3) at r.runTask (polyfills.js:3) at o (polyfills.js:3)
从我的 package.json 我可以看到:@ngx-translate/core": "^9.1.1" 和 @ngx-translate/http-loader": " ^2.0.1
我的离子信息
@ionic/cli-utils : 1.19.2 ionic (Ionic CLI) : 3.20.0
global packages:
cordova (Cordova CLI) : 8.0.0
local packages:
@ionic/app-scripts : 3.1.0 Cordova Platforms : android 7.1.0 browser 5.0.3 ios 4.4.0 Ionic Framework : ionic-angular 3.9.2
System:
Android SDK Tools : 25.2.5 ios-deploy : 1.9.2 Node : v6.10.0 npm : 3.10.10 OS : macOS High Sierra Xcode : Xcode 9.3.1 Build version 9E501
Environment Variables:
ANDROID_HOME : /usr/local/Cellar/android-sdk/24.1.2/
Misc:
backend : pro
我也有相同的版本@ngx-translate/core": "^9.1.1" 和@ngx-translate/http-loader": "^2.0.1"
您可以使用我的 package.json 检查 angular 依赖项和 ionic-app 脚本版本。它适用于那些版本。
"dependencies": {
"@angular/animations": "5.2.9",
"@angular/common": "5.2.9",
"@angular/compiler": "5.2.9",
"@angular/compiler-cli": "5.2.9",
"@angular/core": "^5.2.9",
"@angular/forms": "5.2.9",
"@angular/http": "5.2.0",
"@angular/platform-browser": "^5.2.9",
"@angular/platform-browser-dynamic": "5.2.9",
"@ionic-native/app-version": "^4.7.0",
"@ionic-native/ble": "^4.7.0",
"@ionic-native/core": "4.6.0",
"@ionic-native/globalization": "^4.7.0",
"@ionic-native/keyboard": "^4.7.0",
"@ionic-native/network": "^4.7.0",
"@ionic-native/screen-orientation": "^4.7.0",
"@ionic-native/splash-screen": "4.6.0",
"@ionic-native/status-bar": "4.6.0",
"@ionic/storage": "2.1.3",
"@ngx-translate/core": "^9.1.1",
"@ngx-translate/http-loader": "^2.0.1",
"cordova-android": "6.3.0",
"cordova-ios": "4.5.4",
"cordova-plugin-app-version": "^0.1.9",
"cordova-plugin-compat": "^1.2.0",
"cordova-plugin-device": "^2.0.1",
"cordova-plugin-globalization": "^1.0.9",
"cordova-plugin-ionic-keyboard": "^2.0.5",
"cordova-plugin-ionic-webview": "^1.1.19",
"cordova-plugin-screen-orientation": "^3.0.1",
"cordova-plugin-splashscreen": "^5.0.2",
"cordova-plugin-statusbar": "^2.4.1",
"cordova-plugin-whitelist": "^1.3.3",
"es6-promise-plugin": "^4.2.2",
"ionic-angular": "3.9.2",
"ionicons": "3.0.0",
"moment": "^2.22.1",
"moment-timezone": "^0.5.16",
"rxjs": "5.5.8",
"sw-toolbox": "3.6.0",
"zone.js": "0.8.20"
},
"devDependencies": {
"@ionic/app-scripts": "3.1.8",
"typescript": "~2.6.2",
}
应用程序模块:app.module.ts
import {ErrorHandler, NgModule} from '@angular/core';
import {IonicApp, IonicErrorHandler, IonicModule} from 'ionic-angular';
// import ngx-translate and the http loader
import {TranslateLoader, TranslateModule} from '@ngx-translate/core';
import {TranslateHttpLoader} from '@ngx-translate/http-loader';
import {HttpClient, HttpClientModule} from '@angular/common/http';
import {Globalization} from '@ionic-native/globalization';
/****************************Pages*******************************/
import {myApp} from './app.component';
import {SignUp} from '../pages/sign_up/sign-up.component';
import {GlobalizationService} from '../providers/common_service/globalisation.service';
// required for AOT compilation
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
@NgModule({
declarations: [
myApp,
],
imports: [
IonicModule.forRoot(myApp, {
mode: 'ios'
}),
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
})
],
bootstrap: [IonicApp],
entryComponents: [
myApp,
SignUp,
],
providers: [
Globalization,
GlobalizationService,
//TODO TEST
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {
}
应用程序组件文件:app.component.ts
import {Component, ViewChild} from '@angular/core';
import {Platform} from 'ionic-angular';
import {GlobalizationService} from '../providers/common_service/globalisation.service';
import {SignUp} from '../pages/sign_up/sign-up.component';
@Component({
templateUrl: 'app.html'
})
export class myApp {
@ViewChild(Nav) nav: Nav;
rootPage: any = SignUp;
pages: Array<{ title: string, component: any }>;
constructor(private globalizationService: GlobalizationService) {
}
protected initializeApp() {
this.globalizationService.initializeLocalization();
this.platform.ready().then(() => {
//Function initializeLocalization can also call here
});
}
}
全球化服务:globalisation.service
import { Injectable } from '@angular/core';
import { Globalization } from '@ionic-native/globalization';
import { TranslateService } from '@ngx-translate/core';
@Injectable()
export class GlobalizationService {
public userLang:any;
constructor(private globalization: Globalization,public translateService: TranslateService){}
/*
* Function to initialize localization for application
*/
public initializeLocalization(){
console.log('in init location');
this.globalization.getPreferredLanguage()
.then(res => {
console.log(res);
if(res.value=="fr-FR"){
this.userLang="fr";
this.useLanguage(this.userLang);
}
else{
this.translateService.setDefaultLang('en');
}
})
.catch(e => {
console.log(e)
this.translateService.setDefaultLang('en');
});
}
/**
* Function to set language for application
* @param language: Language to use
*/
public useLanguage(language: string) {
this.translateService.use(language);
}
}
今天我们的一个工作站遇到了同样的问题,它与其他工作站共享同一个 node_module 文件夹! 该错误似乎与最新的 Chrome 更新版本或生成的 ts Source Maps 或两者有关,因为当我们 运行 我们的应用程序在其他浏览器的开发模式下工作正常...... 快速修复是进行生产构建并将其加载到 Chrome ,然后在开发模式下重试。 至少这对我们有用,也许对其他人也有用。