【问题标题】:Can't resolve all parameters for TranslateService: (?, ?, ?, ?, ?, [object Object]无法解析 TranslateService 的所有参数:(?, ?, ?, ?, ?, [object Object]
【发布时间】:2018-05-18 17:42:11
【问题描述】:

从昨天开始,我无法再在浏览器中测试我的 ionic 3 应用程序,因为我收到以下与 TranslateService 相关的错误。这似乎与我的代码无关,因为当我切换到以前的版本时,我也面临同样的问题,尽管当时它运行良好。我尝试重新安装节点模块,但仍然没有运气。你知道我应该怎么做才能解决这个问题吗?谢谢!

ERROR 错误:未捕获(承诺中):错误:无法解决所有问题 TranslateService 的参数:(?, ?, ?, ?, ?, [object Object], [对象对象])。错误:无法解析所有参数 TranslateService: (?, ?, ?, ?, ?, [object Object], [object Object])。 在 syntaxError (compiler.js:466) 在 CompileMetadataResolver._getDependenciesMetadata (compiler.js:15544) 在 CompileMetadataResolver._getTypeMetadata (compiler.js:15379) 在 CompileMetadataResolver._getInjectableMetadata (compiler.js:15359) 在 CompileMetadataResolver.getProviderMetadata (compiler.js:15719) 在 compiler.js:15630 在 Array.forEach () 在 CompileMetadataResolver._getProvidersMetadata (compiler.js:15590) 在 compiler.js:15080 在 Array.forEach () 在 syntaxError (compiler.js:466) 在 CompileMetadataResolver._getDependenciesMetadata (compiler.js:15544) 在 CompileMetadataResolver._getTypeMetadata (compiler.js:15379) 在 CompileMetadataResolver._getInjectableMetadata (compiler.js:15359) 在 CompileMetadataResolver.getProviderMetadata (compiler.js:15719) 在 compiler.js:15630 在 Array.forEach () 在 CompileMetadataResolver._getProvidersMetadata (compiler.js:15590) 在 compiler.js:15080 在 Array.forEach () 在 c (polyfills.js:3) 在 c (polyfills.js:3) 在 polyfills.js:3 在 t.invokeTask (polyfills.js:3) 在 Object.onInvokeTask (core.js:4617) 在 t.invokeTask (polyfills.js:3) 在 r.runTask (polyfills.js:3) 在 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

全局包:

cordova (Cordova CLI) : 8.0.0 

本地包:

@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

系统:

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 

环境变量:

ANDROID_HOME : /usr/local/Cellar/android-sdk/24.1.2/

杂项:

backend : pro

【问题讨论】:

    标签: ionic3 ngx-translate


    【解决方案1】:

    今天我们在一个与其他工作站共享相同 node_module 文件夹的工作站中遇到了同样的问题! 该错误似乎与最新的 Chrome 更新版本或生成的 ts Source Maps 或两者有关,因为当我们在开发模式下运行我们的应用程序到其他浏览器时工作正常...... 一个快速解决方法是进行生产构建并将其加载到 Chrome 上,然后在开发模式下重试。 至少这对我们有用,也许对其他人有用。

    【讨论】:

    • 哦,是的,谢谢你的提示!我确认它不适用于 Chrome,但在 Firefox 上运行良好。
    【解决方案2】:

    我也有相同的版本@ngx-translate/core": "^9.1.1" 和@ngx-translate/http-loader": "^2.0.1"
    您可以使用我的 package.json 检查角度依赖性和 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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      • 2018-04-12
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多