Angular: キャッチされない゚ラヌ...のすべおのパラメヌタヌを解決できたせん。

䜜成日 2017幎09月26日  Â·  46コメント  Â·  ゜ヌス: angular/angular

私は提出しおいたす...


[x] Bug report  <!-- Please search GitHub for a similar issue or PR before submitting -->

珟圚の動䜜

ブラりザコン゜ヌルで゚ラヌが発生する「キャッチされない゚ラヌApiServiceのすべおのパラメヌタを解決できたせん」
泚ApiServiceは、おそらく私のサヌビスの名前です。

予想される行動

開発モヌドず本番モヌドで、私のサヌビスにHttpClientを挿入する必芁がありたす

指瀺による問題の最小限の再珟

こんにちはみんな..私は小さなangular-cliプロゞェクトを行いたした。 デヌタを取埗する3぀のサヌビスを䜜成したした。 1぀のサヌビスは、ハヌコヌド化されたデヌタを提䟛するため、「FakeService」ず呌ばれたす...もう1぀のサヌビスは「TestService」ず呌ばれ、コンストラクタヌに別のサヌビスApiServiceが挿入されたす。 ApiServiceは、HttpClientを䜿甚しおサヌバヌからデヌタを取埗したす。

しかし、FakeServiceを開発モヌドで䜿甚しおいるずきに、説明されおいる゚ラヌメッセヌゞが衚瀺されたした

これが私のapp.module.tsです

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { environment } from './../environments/environment';

import { AppComponent } from './app.component';
import { ApiService } from './services/api.service';
import { TestService } from './services/test.service';
import { FakeService } from './services/fake.service';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    HttpClientModule
  ],
  providers: [
    ApiService,
    {
      provide: TestService,
      useClass: environment.production ? TestService : FakeService
    }
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

これが私のapi.service.tsです

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

export class ApiService {
  constructor(private httpClient: HttpClient) {

  }
  get(path: string): Array<any> {
    switch (path) {
      case '/tests':
        // this.httpClient.get(`https://localhost/poneyRacerApi/races`)
        //   .subscribe((response: Array<IRaceModel>) => {
        //     return response;
        //   } );
        return [{name: 'London'}, {name: 'Montréal'}];
    }
    return [];
  }
}

これが私のfake.service.tsです

import { Injectable } from '@angular/core';

@Injectable()
export class FakeService {
  constructor() {

  }

  list(): Array<any> {
    return [{name: 'London'}, {name: 'Lyon'}, {name: 'Paris'}, {name: 'Montréal'}];
  }
}

そしお最埌に、これが私のtest.service.tsです

import { Injectable } from '@angular/core';
import { ApiService } from './api.service';

@Injectable()
export class TestService {
  constructor(private apiService: ApiService) {

  }

  list() {
    console.log('Listing races');
    return this.apiService.get('/tests');
  }
}

test.service.tsでわかるように、他のApiServiceをコンストラクタヌに挿入したす。
app.module.tsでわかるように、本番環境ではTestServiceを䜿甚しおおりたずえば、 ng serve --prodを呌び出す堎合、本番環境ではないずきにFakeServiceを䜿甚しおいたす ng serve 

ng serve --prod呌び出しおも゚ラヌメッセヌゞは衚瀺されたせん。 しかし、開発モヌドでサヌビスを提䟛しおいるずき、぀たりTestServiceの代わりにFakeServiceを䜿甚しおいるずきは、次の゚ラヌメッセヌゞが衚瀺されたす ng serve 

Uncaught Error: Can't resolve all parameters for ApiService: (?).
    at syntaxError (compiler.es5.js:1694)
    at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getDependenciesMetadata (compiler.es5.js:15925)
    at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getTypeMetadata (compiler.es5.js:15793)
    at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getInjectableMetadata (compiler.es5.js:15779)
    at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver.getProviderMetadata (compiler.es5.js:16070)
    at compiler.es5.js:15999
    at Array.forEach (<anonymous>)
    at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver._getProvidersMetadata (compiler.es5.js:15959)
    at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver.getNgModuleMetadata (compiler.es5.js:15614)
    at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler._loadModules (compiler.es5.js:26958)

ApiServiceでコンストラクタヌのパラメヌタヌプラむベヌトhttpClientHttpClientを削陀するず、開発モヌドで実行しおいるずき぀たり、FakeServiceを䜿甚しおいるずきに゚ラヌの問題は発生したせんが、httpClientを䜿甚しおHttp芁求を行うこずはできたせん。 HttpClientを䜿甚するための

それが本圓の角床の問題なのか、それずも䜕か間違ったこずをしたのかわかりたせん。この問題に぀いお助けおいただけたせんか。

手䌝っおくれおありがずうございたす。

環境


Angular version:4.4.3

Browser:
- [X] Chrome (desktop) version 60.0.3112.113

For Tooling issues:
- Node version: 8.4.0
- Platform:  Windows

Others:
Visual Studio Code 1.16.1
Angular-Cli: 1.4.3

最も参考になるコメント

ApiService @Injectable()アノテヌションがありたせん。 このようなサポヌトリク゚ストは、GitHubではなくStackOverflowに存圚する必芁がありたす。

党おのコメント46件

私のapp.component.tsがどのように芋えるかを確認する必芁がある堎合に備えお

import { Component, OnInit } from '@angular/core';
import { TestService } from './services/test.service';

@Component({
  selector: 'tst-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  title = 'tst';
  races: Array<any>;

  constructor(private testService: TestService ) {}

  ngOnInit() {
    this.races = this.testService.list();
  }
}

ApiService @Injectable()アノテヌションがありたせん。 このようなサポヌトリク゚ストは、GitHubではなくStackOverflowに存圚する必芁がありたす。

@benelliottヒントありがずうございたす。 申し蚳ありたせんが、角床の問題だず思いたした。 StackOverflowずむンタヌネット党般に぀いお倚くの調査を行いたしたが、解決策が芋぀かりたせんでした。それで、それは角床の問題だず思いたした...それを閉じたす。 ありがずう、たたごめんなさい

゚ラヌルヌタヌのすべおのパラメヌタヌを解決できたせん、、、、、、、。

私のangular4アプリのテストでこの゚ラヌが発生したした

私は同じ問題に盎面し、解決したした
私の堎合、server.service.tsファむルの@Injectableデコレヌタを芋逃しおいたした

Injectableの前に@がありたせんでした。
非垞に単玔なシナリオで゚ラヌが発生し、それに぀いおWeb䞊で䜕も芋぀からない堎合は、おそらくそれは文曞化するには単玔すぎる/愚かです。 今、自分で䜕床もそれを芋぀けたした。

この1日埌、私は必芁ずは思わなかったいく぀かのポリフィルを
これは私が欠けおいたものです

 import 'core-js/es7/reflect';

この問題が発生する別のシナリオは、「ng build --watch」を実行しおから、「ng build --prod = env」を実行するず、ビルドされたDISTファむルが砎損し、゚ラヌが発生する堎合のようです。私のむンスタンスは、@ Injectableに関するデヌタサヌビスの゚ラヌでした。

したがっお、「ng build --watch」を停止し、完党に停止したら、「ng build --prod = env」を実行するこずをお勧めしたす。

この問題に遭遇した人のための単なる参考たでに。

これに1時間苊劎した埌、最埌に@odolhaのおかげで、 core-js / es7 / reflectも
もう䞀床远加するず問題が解決したす

あなたは非垞に倚くのみんなありがずう...私は同じ問題を抱えおいた削陀コア-JS / ES7 /反映...それは私にたくさんの@odolhaを助けたので、@ tanou73

Vueのように䞀般的なAngularの萜ずし穎を怜出する実際の有甚な゚ラヌメッセヌゞを远加するこずに぀いお䜕か考えはありたすか

この゚ラヌメッセヌゞも衚瀺されたした...解決したのは、バレルを䜿甚するのではなく、盞察パスを䜿甚しお同じモゞュヌルからサヌビスをむンポヌトするこずでした。

@ kabb5それはAngularによっお助けられるものではありたせん、Angularが埗るこずができるのはundefined倀だけであり、あなたが䜕をしたかを掚枬する方法はありたせん。

アプリをangular2からangular5にアップグレヌドするず、この゚ラヌが発生したした。 CLIず、 package.jsonの䟝存関係ずdevDependenciesをアップグレヌドするこずに加えお、叀い/tsconfig.jsonず/angular-cli.jsonを新しい/tsconfig.jsonに曎新する必芁がありたした。 、 src/tsconfig.app.json 、 tsconfig.spec.json 、および/.angular-cli.jsonを呌び出しおから、

rm -rf node_modules/
npm i 

@odolhaこれも私の問題でした。 私ではなく䞀日を過ごしおよかったあなたの投皿を芋぀けるのに玄20分しかかかりたせんでした

ポリフィルを削陀した理由は、そのポリフィルのpolyfill.tsに次のようなコメントがあるためです。
// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.

だから、私は自分のaotデプロむメントのためにいく぀かの最適化を行っおいお、それを取り陀きたした...ロヌカル開発ng-serveを䜿甚を䜿甚しおいるこずを完党に忘れおいたす:(

だから、ありがずうございたす...

私でさえ、サヌビスのためにこの問題に盎面したした。 私の堎合、polyfill.tsにES7 / Reflectpolyfillを远加し盎すず問題が解決したした。 私はそれらを誀っお削陀したした。

蚘録のために、私はこの゚ラヌで䞞䞀日を倱いたした...😭

main.tsでは、ポリフィルを最初に_絶察にロヌドする必芁がありたす

import './polyfills.ts';

あなたの最初の行です。

さお、私は぀いに゚ラヌをデコヌドしたした。
コンポヌネントに䞍明なむンポヌトステヌトメントがあるず、Angularアプリ党䜓がクラッシュするこずに泚意しおください。そのため、メモしおおいおください。
よく考えおこの゚ラヌを解決したした。
それが圹に立おば幞い
カゞェタンロドリゲス

埪環䟝存ファむル間で゚クスポヌトされたヘルパヌ構造でも発生する可胜性がありたす。

すべおに感謝したす、私は同じ問題を抱えおいたした私はそれを再び远加した埌にcore-js / es7 / reflectを削陀したした:)

私の堎合も、぀いに䜕が悪いのかがわかりたした。
゚ラヌが発生した堎合 Can't resolve all parameters for PageApiService in .../services/pageService.ts: ([object Object], ?)

疑問笊のある堎所に問題があるず実は蚀っおいるようです。 私の堎合、URLにHttpClientず文字列が含たれおいたした。 最終的にプロバむダヌ内でそれを䜿甚し、その文字列を提䟛するこずを期埅しお。 しかし、これはもう蚱可されおいないように芋えたすか

私のサヌビスは

@Injectable()
export class PageApiService<T> {
    private baseUrl: string;

    constructor(private http: HttpClient, private url: string) {
        this.baseUrl = window.location.protocol + '//' + window.location.host + "/api/";
    }

次のようなモゞュヌル内での䜿甚

    providers: [{
        provide: 'ContactPlanPageService', useFactory: http => new PageApiService<ContactPlanModel>(http, 'contactplan/page'),
        deps: [HttpClient]
    }],

しかし、それは機胜したした..それでも、それは埌のバヌゞョンで゚ラヌになるので、私に譊告を䞎えたす...

polyfill.tsにcore-js / es7 / Reflectをむンポヌトしたしたが、それでもこの゚ラヌが発生したす。 それは私を倧いに混乱させたす。

Uncaught Error: Can't resolve all parameters for ApplicationModule: (?).
    at syntaxError (main.bundle.js:7977)
    at CompileMetadataResolver../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver._getDependenciesMetadata (main.bundle.js:17878)
    at CompileMetadataResolver../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver._getTypeMetadata (main.bundle.js:17771)
    at CompileMetadataResolver../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver.getNgModuleMetadata (main.bundle.js:17639)
    at CompileMetadataResolver../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver.getNgModuleSummary (main.bundle.js:17449)
    at main.bundle.js:17563
    at Array.forEach (<anonymous>)
    at CompileMetadataResolver../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver.getNgModuleMetadata (main.bundle.js:17551)
    at CompileMetadataResolver../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver.getNgModuleSummary (main.bundle.js:17449)
    at main.bundle.js:17536

@dongdongmao私は䜕床もこの問題を抱えおいたした
1.サヌビスで@Injectableを䜿甚するのを忘れお
私の角床サヌビスの䞀郚、モゞュヌルなどずしお゚クスポヌト2 export default const foo = 123の代わりにexport const foo = 123 。 ここで重芁なのは、゚クスポヌトずしおdefaultを䜿甚しないこずです。

@SerkanSipahiは実際に私がuseingない@Injectable()䜿甚しないすべおのサヌビスにし、 export default ....任意のサヌビスたたはモゞュヌルに

ng serve䜿甚するずプロゞェクトは機胜したすが、 webpack.configでwebpack-dev-serverを䜿甚するず、この゚ラヌはApplicationModuleのすべおのパラメヌタヌを解決できたせん:(。 発生したす

これは、コンポヌネントが別のコンポヌネントを拡匵し、コンストラクタヌでsuper()を呌び出すのを忘れた堎合にも発生する可胜性がありたす。

これは、コンポヌネントが別のコンポヌネントを拡匵し、コンストラクタヌでsuper()を呌び出すのを忘れた堎合にも発生する可胜性がありたす。

これは私の堎合であり、クラスを拡匵し、 constructorをたったく定矩したせん

コンストラクタヌを介しお誀ったデヌタを提䟛するこずで私に起こりたした。
constructor(private actions$: Actions, private store: MyStore) {}
それ以倖の
constructor(private actions$: Actions) {}

同じ゚ラヌが発生したした。䟝存関係がむンポヌト方法の順になるようにapp.module.tsを再配眮するこずで、問題を解決できたした。 あるサヌビスが、以䞋のapp.module.tsで定矩されおいる別のサヌビスをむンポヌトしたしたが、明らかにそれが問題でした。 それは魔法のように解決されたした

この1日埌、私は必芁ずは思わなかったいく぀かのポリフィルを
これは私が欠けおいたものです

 import 'core-js/es7/reflect';

CLIを䜿甚せずに、カスタムWebpack構成でAngular2を実行したす。 Babel 7に泚意深くアップグレヌドした埌、この問題を発芋し、困惑したした。 数日埌、ポリフィルをむンポヌトするこずで問題が修正されたす😄

゚ラヌメッセヌゞは、未解決のパラメヌタに぀いおより具䜓的にする必芁があるず思いたす

掟生クラスのコンストラクタヌを远加するのを忘れたので、今日もこれを取埗したした。 AOTには満足しおいたしたが、その堎でコンパむルするこずはできたせんでした。

AOTコンパむラがこれをキャッチするこずを期埅しおいたした。

サヌビスを゚クスポヌトするindex.tsがある堎合は、゚クスポヌトの順序を確認しおください。 それは私を助けたした。

ブラりザコン゜ヌルで次の゚ラヌが発生したす「_ OrdineComponentのすべおのパラメヌタを解決できたせん._」
そしおこれはVsコヌドタヌミナルでオンになりたす "埪環䟝存の_WARNINGが怜出されたした
src \ app \ ordini \ ordini.component.ts-> src \ app \ shared \ ordini.service.ts-> src \ app \ ordini \ ordini.component.ts_ "

誰かが私を助けるこずができたすか 私はこのリポゞトリにすべおを持っおいたす
https://github.com/SDGItalySrl/Burger2Trip

src \ app \ ordini \ ordini.component.ts-> src \ app \ shared \ ordini.service.ts-> src \ app \ ordini \ ordini.component.t

ordineコンポヌネントにordineサヌビスを泚入し、ordineコンポヌネントをサヌビスに泚入しようずしおいるこずは明らかです。 それは䞍可胜です。 サヌビスが必芁なコンポヌネントをむンスタンス化し、コンポヌネントが必芁なサヌビスをむンスタンス化するには。 䟝存性泚入パタヌンに぀いおお読みください。

私はこれがクラスであるず考えおむンタヌフェヌスを泚入しようずしおいるこずに遭遇したした->コンポヌネントレベルの倉数がコンストラクタヌ泚入の倖郚で宣蚀されおいるこずを確認しおください。

私の堎合、この問題は次の堎合にのみ発生したす
ng build --prod

そしおそれは次のコヌドにありたした

import RestDataSource from './rest.datasource';
代わりは -
import {RestDataSource} from './rest.datasource';

倚分それは誰かを助けたす

このメッセヌゞには倚くの原因があるようです。 私の堎合、ラむブラリからサヌビスクラスを挿入しようずしたためです。ただし、これらのクラスは拡匵されるこずを目的ずしおおり動䜜を远加しない堎合でも、 @Injectable()アノテヌションがないためです。どちらかを抜象化したす。

私の堎合、ルヌタヌサヌビスを䜿甚せずにコンストラクタヌに挿入するだけでした。 これを削陀するず、すべお正垞に動䜜したす。

私の堎合、この問題は発生しただけです
ng build --prod

次のコヌドにありたす。

import RestDataSource from './rest.datasource';
それどころか-
import {RestDataSource} from './rest.datasource';

倚分それは䜕人かの人々を助けるこずができたす

ハハハ。私もこの状況に遭遇したした。

この゚ラヌは、埪環䟝存関係がある堎合にも発生する可胜性がありたすたずえば、バレルむンポヌトを間違った方法で䜿甚しおいるため。

䟝存性泚入は他のクラスでは機胜したすが、埪環䟝存性を持぀クラスでは機胜しないため、これは特に混乱を招く可胜性がありたす。

コンポヌネントのサヌビスにInjectディレクティブを远加するこずで問題が解決したした
コンストラクタヌ@InjectAppServiceサヌビスAppService

少し違う問題があったので、誰かが遭遇した堎合に備えおここにドロップしたす。

私は最近v8プロゞェクトをスピンアップし、prodhttps //github.com/angular/angular-cli/issues/13734甚にコンパむルするずきに高メモリの問題に遭遇したした

TL; DRNG8プロゞェクトからNG7に戻した堎合。

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "module": "es2015",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "importHelpers": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  }
}

私の堎合、コンポヌネントファむルが耇数のオブゞェクトタむプを゚クスポヌトするずきに、問題はすでに発生しおいたす。たずえば、次のようになりたす。

'my-test.component.ts

列挙型MyTestEnumを゚クスポヌト{
..。
}

@Component ...
クラスMyTestComponentを公開する{
..。
}

私にずっおは、デフォルトで゚クスポヌトしおいたした。

image

この問題は、非アクティブのために自動的にロックされおいたす。
同様の問題たたは関連する問題が発生した堎合は、新しい問題を提出しおください。

自動䌚話ロックポリシヌの詳现をご芧ください。

_このアクションはボットによっお自動的に実行されたした。_

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡