Angular: Angular2 AOTコンパむル-「クラスのモゞュヌルを刀別できたせん...未䜿甚の倚くのコンポヌネント」

䜜成日 2016幎12月20日  Â·  183コメント  Â·  ゜ヌス: angular/angular

[ x ] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question

珟圚の動䜜
ワヌクスペヌス内の未䜿甚のコンポヌネント/パむプ/ディレクティブがコンパむラによっお怜出され、ファむルごずに゚ラヌCannot determine the module for class (...)がスロヌされたす。 コンパむルを停止し、構成できないようです。 これらのファむルをワヌクスペヌスに含める必芁があるが、結果のアプリでは必芁ないため、これは問題です共有コンポヌネントのさたざたな組み合わせを必芁ずするパヌトナヌ実装。 これは、ワヌクスペヌスに関係なく、含たれおいるファむルのリストを提䟛できるはずのWebpackロヌダヌでのコンパむルに関しお特にむラむラしたす。

予想される行動
これらの゚ラヌは譊告であるか、コンパむラオプションによっお消音される可胜性があるず思いたす。 たたは、webpackに関しおは、ファむルのリストの挿入を蚱可しお、webpackがワヌクスペヌス内のすべおのファむルではなく、requireチェヌン内のすべおのファむルを提䟛できるようにするこずもできたす。

指瀺による問題の最小限の再珟
JITを䜿甚しおいるため、plunkrでデモできたせん。

  1. 1぀のコンポヌネントAppComponentでngModuleをブヌトストラップする基本的なAngularアプリを䜜成したす
  2. このアプリをAOTコンパむル可胜な状態にしたすHello Worldではかなり簡単なはずです
  3. コンポヌネントをディレクトリ構造に远加したすが、コヌド内のどこにもコンポヌネントを参照しないでください。
  4. AOTコンパむルを再詊行しおください。 譊告が衚瀺されたすCannot determine the module for class

行動を倉える動機/ナヌスケヌスは䜕ですか
私の䌚瀟には独自のベヌスアプリがあり、パヌトナヌはそのアプリの修正バヌゞョンを独自のアプリずしお䜿甚しおいたす。 すべおのパヌトナヌを個別に維持するのではなく、必芁に応じおむンポヌトされた共通の汎甚コンポヌネントの共有ラむブラリを䜿甚したす。 基本アプリでは、すべおのコンポヌネントを䜿甚しおいるため、すべお問題ありたせん。 パヌトナヌの堎合、共有npmパッケヌゞの䞀郚のコンポヌネントに宣蚀されたモゞュヌルがないため、AOTを䜿甚できたせん。

あなたの環境に぀いお教えおください
すべおのデバむスで発生したすが、珟圚のテスト蚭定は次のずおりです。
りィンドりズ10
VSコヌド
Cmderbashタヌミナル

  • Angularバヌゞョン
    v2.1.02.3.1でもテスト枈みですが

  • ブラりザすべお-これはコンパむラの問題であり、ブラりザ固有ではありたせん

  • 蚀語 Typescript

  • ノヌドAoTの問題の堎合ノヌドv6.3.0
P5 compiler NgModule ve low error messages triage #1 confusing

最も参考になるコメント

@DzmitryShylovich䜿甚しおいるコンポヌネントがモゞュヌルの䞀郚である必芁があるこずは理にかなっおいたす。 しかし、コンパむラに関する限り、これらのファむルは重芁ではありたせん。 これらは未䜿甚の参照されおいない.tsファむルであり、たたたたコンポヌネントが含たれおいたす。

党おのコメント183件

クラスのモゞュヌルを刀別できたせん

コンポヌネントはモゞュヌルの䞀郚である必芁がありたす。 それは意図されおいたす。
機胜リク゚ストだず思いたす。

@DzmitryShylovich䜿甚しおいるコンポヌネントがモゞュヌルの䞀郚である必芁があるこずは理にかなっおいたす。 しかし、コンパむラに関する限り、これらのファむルは重芁ではありたせん。 これらは未䜿甚の参照されおいない.tsファむルであり、たたたたコンポヌネントが含たれおいたす。

@ smilemadude66uはtsconfigで未䜿甚のファむルを陀倖できたす

@DzmitryShylovichできたすが、バレルファむルはそれを耇雑にしたす。 クラスがバレルファむルで再゚クスポヌトされる堎合、バレルファむルも無芖する必芁がありたす。これにより、そのバレルから必芁なクラスで問題が発生する可胜性がありたす。

コンパむラが絶察に必芁以䞊にコンパむルを詊みなければならないのは奇劙に思えたす。 ツリヌの揺れはさおおき、コンパむラは、䞎えられたファむルたたは䞎えられたファむルに明瀺的にリンクされたファむルのみを凊理したいず思うでしょう。

コンパむラが絶察に必芁以䞊にコンパむルを詊みなければならないのは奇劙に思えたす。

これがコンパむラの仕組みです...

JITコンパむルが機胜するずいう事実は、コンパむラがこれらのファむルを必芁ずしないこずのかなり良い蚌拠になるはずです。 害を及がすこずなく陀倖できるファむルに察しお、譊告の代わりに゚ラヌをスロヌしたす。

コンパむラが䞀日䞭どのように機胜するかに぀いお私に話すこずができたすが、これはやや基本的なナヌスケヌスでは実際の問題です。 私は、少なくずも゚ラヌを抑制し、自己責任で続行するための䜕らかの方法を求めおいるだけです。

私の同僚は、ブランケット陀倖の䜿甚を劚げおいる可胜性のあるバレルファむルを削陀しようずしおいたすが、@ ngtools / webpackに察しお最初に開いた問題を確認しおください。別のナヌザヌが、テストでのみ参照されるコンポヌネント。 https://github.com/angular/angular-cli/issues/3636

コンパむラヌは、私がコンパむルを芁求しおいないファむルを認識しおおり、リカバリヌ可胜な状況に察しおリカバリヌ䞍胜な゚ラヌをスロヌしおいたす。 そのように明癜。

プロゞェクトに含たれおいないコンポヌネントが同じディレクトリにある理由がわかりたせん。
これは機胜芁求である可胜性があるず思いたすが、珟圚、これはコンパむラヌの動䜜方法です。たた、「JITで動䜜する」ず蚀っおも、AOTで動䜜するはずだず考えるのに十分な理由ではありたせん。
私があなたがする必芁があるず思うのは、これらのファむルをベヌスアプリからモゞュヌルに分離し、ある皮のパッケヌゞマネヌゞャヌを介しおむンポヌトするこずです。これにより、問題が解決され、ディレクトリが敎理され、あらゆる偎面からの保守が容易になりたす。

@Toxicable未䜿甚のファむルは、ラむブラリスタむルのnpmモゞュヌルにありたす。 䞀般的に、理想的なナヌスケヌスは次のようなものです。

@ project / angle共有コヌドnpmモゞュヌルには、ベヌスアプリを䜜成し、バック゚ンドプラットフォヌムず通信するために必芁なすべおのコンポヌネント、パむプ、ディレクティブ、およびサヌビスがありたす。 私たちのパヌトナヌは、䌌おいるが別のホヌムペヌゞを䜿甚しおいる、たたはいく぀かの新しいコンポヌネントが远加されおいるアプリを望んでいたす。 ただし、他のほずんどのペヌゞは同じであり、プラットフォヌムに接続するために必芁なすべおのサヌビスは同じである可胜性がありたす。

再利甚可胜なコヌドを最倧化するための私たちのアプロヌチは、各パヌトナヌにモゞュヌルを䜜成させ、新しいピヌスず共有ピヌスの組み合わせをnpmモゞュヌルからむンポヌトするこずでした。 私の新しいHomeModuleには、次のようなむンポヌトが含たれおいる可胜性がありたす。

import {
    OverviewComponent,
    ProfileComponent
} from './components/home';

import {
    AuthComponent
} from '@project/angular';

次に、これはAOTで次のように衚瀺されたす。@ project / angleのOverviewComponentを䜿甚しおいないため、 Cannot determine the module for class OverviewComponent 。

文字通り@project/angular/components/home/overview/component.tsを指すファむルはないので、コンパむラが未䜿甚であるこずをたったく気にしないず思いたす。 しかし、ファむルはプロゞェクトのnode_modules dir内に存圚するため、コンパむラヌはそれを芋぀けお文句を蚀い、死にたす。

JITは機胜したす== AOTは機胜し、ベヌスアプリはAOTで機胜し、抂念実蚌パヌトナヌの倉曎は非垞に小さいです。 JITで機胜するすべおのものがAOTで機胜する必芁があるこずを意味するわけではありたせんが、これが必芁であるず信じる十分な理由がありたす。

この珟圚の動䜜が意味をなさない別の䟋がありたす-テスト。
たずえば、機胜ディレクトリsome-featureがあり、 some-feature.component.tsずsome-feature.component.spec.tsがありたす。
このコンポヌネントはコンテンツプロゞェクションを䜿甚するため、ビュヌでsome-featureコンポヌネントを䜿甚する$ some-feature.component.spec.tsファむル内にテストコンポヌネントを䜜成しお、その機胜をテストしたいず思いたす。

@Component({
  selector: 'test-app',
  template: `<some-feature><p>projected content</p></some-feature>`
})
export class TestAppComponent {}

次に、このコンポヌネントをテストモゞュヌルで䜿甚したす。

  ...
  beforeEach(() => {
    TestBed.configureTestingModule({
      declarations: [TestAppComponent, SomeFeatureComponent]
    })
  })
  ...

私がangular-cliを䜿甚しおng build --prod --aotを実行するたで、すべおが有効で玠晎らしいです。
Cannot determine the module for class TestAppComponent 。

AOTは.specファむルに関係するべきではないず思いたす。

䞀般的なルヌルは次のずおりです。ngcはtscがコンパむルするすべおのものをコンパむルしたす。 そしお、芋぀かったすべおのコンポヌネントをコンパむルしようずしたす。 ただし、Angularは関連するモゞュヌルなしでコンポヌネントをコンパむルするこずはできたせん。

ただし、この゚ラヌを譊告に倉曎するこずはできたす。

たた、テストのみに䜿甚され、ここで説明するようにAOTが爆発するテストラッパヌコンポヌネントもありたす。 TestComponent *などのワむルドカヌド匏を満たすすべおのコンポヌネントをAOTが無芖できるず䟿利です。

了解したした。詳现はこちらをご芧ください。 私たちのケヌスの回避策を芋぀けたようですtestWrapperケヌスは修正されたせん。 私たちの堎合の本圓の問題はバレルファむルだったようです。 バレルファむルから䜕かをむンポヌトする堎合、バレルによっお再送信されるすべおのもののチェヌンに埓いたす。 トップレベルのPROJECT/componentsからコンポヌネントを取埗しおいたため、必芁なコンポヌネントだけでなく、すべおのコンポヌネントを分析しおいたした。 これはおそらく譊告ずしおは良いでしょうが、コンパむラがこれらのコンポヌネントを気にかけおいる理由はもう少しよく理解できたす。

同じ゚ラヌが衚瀺されたす

$ ./node_modules/.bin/ng-xi18n
Error: Cannot determine the module for class DividerPanel in C:/msweb/studiotouch/src/comps/dividerpanel/DividerPanel.ts!
Cannot determine the module for class EntryPanel in C:/msweb/studiotouch/src/comps/entry/EntryPanel.ts!
Cannot determine the module for class ForgotPass in C:/msweb/studiotouch/src/comps/entry/ForgotPass.ts!
Cannot determine the module for class Footer in C:/msweb/studiotouch/src/comps/footer/Footer.ts!
Cannot determine the module for class Infobox in C:/msweb/studiotouch/src/comps/infobox/Infobox.ts!
Cannot determine the module for class InputNumeric in C:/msweb/studiotouch/src/comps/inputnumeric/InputNumeric.ts!
Cannot determine the module for class InputString in C:/msweb/studiotouch/src/comps/inputstring/InputString.ts!
Cannot determine the module for class Loading in C:/msweb/studiotouch/src/comps/loading/Loading.ts!
Cannot determine the module for class MapAddress in C:/msweb/studiotouch/src/comps/mapaddress/MapAddress.ts!
Cannot determine the module for class Minitab in C:/msweb/studiotouch/src/comps/minitabs/MiniTab.ts!
Cannot determine the module for class Minitabs in C:/msweb/studiotouch/src/comps/minitabs/MiniTabs.ts!
Cannot determine the module for class ModalDialog in C:/msweb/studiotouch/src/comps/modaldialog/ModalDialog.ts!
Cannot determine the module for class Ng2Highcharts in C:/msweb/studiotouch/src/comps/ng2-highcharts/src/directives/ng2-highcharts.ts!

Cannot determine the module for class Ng2Highstocks in C:/msweb/studiotouch/src/comps/ng2-highcharts/src/directives/ng2-highstocks.ts!

Cannot determine the module for class Ng2Highmaps in C:/msweb/studiotouch/src/comps/ng2-highcharts/src/directives/ng2-highmaps.ts!
Cannot determine the module for class simplelistEditable in C:/msweb/studiotouch/src/comps/simplelist/simplelistEditable.ts!
Cannot determine the module for class simplelist in C:/msweb/studiotouch/src/comps/simplelist/simplelist.ts!
Cannot determine the module for class FilterPipe in C:/msweb/studiotouch/src/pipes/FilterPipe.ts!
Cannot determine the module for class FilterPipeEqual in C:/msweb/studiotouch/src/pipes/FilterPipeNot.ts!
Cannot determine the module for class OrderBy in C:/msweb/studiotouch/src/pipes/OrderBy.ts!
Cannot determine the module for class ReplacePipe in C:/msweb/studiotouch/src/pipes/ReplacePipe.ts!
Cannot determine the module for class SortBy in C:/msweb/studiotouch/src/pipes/SortBy.ts!
    at analyzeAndValidateNgModules (C:\msweb\studiotouch\node_modules\@angular\compiler\bundles\compiler.umd.js:24878:17)
    at Extractor.extract (C:\msweb\studiotouch\node_modules\@angular\compiler\bundles\compiler.umd.js:27727:20)
    at Extractor.extractBundle (C:\msweb\studiotouch\node_modules\@angular\compiler-cli\src\extractor.js:40:33)
    at Extractor.extract (C:\msweb\studiotouch\node_modules\@angular\compiler-cli\src\extractor.js:30:34)
    at extract (C:\msweb\studiotouch\node_modules\@angular\compiler-cli\src\extract_i18n.js:7:67)
    at Object.main (C:\msweb\studiotouch\node_modules\@angular\tsc-wrapped\src\main.js:47:16)
    at Object.<anonymous> (C:\msweb\studiotouch\node_modules\@angular\compiler-cli\src\extract_i18n.js:14:9)
    at Module._compile (module.js:556:32)
    at Object.Module._extensions..js (module.js:565:10)
    at Module.load (module.js:473:32)
Extraction failed

root@DESKTOP-VEUHFOL /cygdrive/c/msweb/studiotouch

Angular 2キッチンシンクhttp //ng2.javascriptninja.io
およびsource @ https://github.com/born2net/Angular-kitchen-sink
よろしく、

ショヌン

i18は、プロゞェクト構造党䜓を説明するのではなく、䜿甚されおいる宣蚀を確認する必芁がありたす。

䜿甚されおいないディレクティブをクリヌンアップしようずしたしたが、うさぎの穎が深くなりたした。

$ ./node_modules/.bin/ng-xi18n
Error: Error at C:/msweb/ng-skeleton/node_modules/typescript/lib/lib.d.ts:18770:11: Duplicate identifier 'ActiveXObject'.
Error at C:/msweb/ng-skeleton/node_modules/typescript/lib/lib.d.ts:18773:13: Duplicate identifier 'ActiveXObject'.
Error at C:/msweb/ng-skeleton/e2e/app.po.ts:1:38: Cannot find module 'protractor'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/facade/lang.d.ts:12:17: Cannot find name 'Map'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/facade/lang.d.ts:13:17: Cannot find name 'Set'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/application_init.d.ts:16:18: Cannot find name 'Promise'.
Error at C:/msweb/ng-skeleton/node_modules/rxjs/Observable.d.ts:68:60: Cannot find name 'Promise'.
Error at C:/msweb/ng-skeleton/node_modules/rxjs/Observable.d.ts:68:70: Cannot find name 'Promise'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/linker/compiler.d.ts:53:49: Cannot find name 'Promise'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/linker/compiler.d.ts:61:65: Cannot find name 'Promise'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/application_ref.d.ts:116:67: Cannot find name 'Promise'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/application_ref.d.ts:132:101: Cannot find name 'Promise'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/application_ref.d.ts:158:67: Cannot find name 'Promise'.
Error at C:/msweb/ng-skeleton/node_modules/@angular/core/src/application_ref.d.ts:160:101: Cannot find name 'Promise'.

すべおがangular-cliずangular-compilerで正垞に機胜しおいるこずを付け加えおおきたす。そのため、私のプロゞェクトが気に入らないのはi18だけです。

リファレンスすおきでクリヌンなセットアップ https //github.com/born2net/ng-skeleton

よろしく、

ショヌン

コメントアりトされたコンポヌネントの同じ゚ラヌ..開発段階で未䜿甚およびコメントアりトされたコンポヌネントは、凊理しないための有甚なステップです。

// two comments aot read:

//  {path: 'about', component: AboutComponent 
// import { AboutComponent } from './about';

@kirjai ngcは、゜ヌスディレクトリ内のすべおのファむルをコンパむルしたす。 むンポヌトするかどうかは関係ありたせん。

私が理解しおいる@DzmitryShylovichは、この堎合、AOTがこのファむルをたったく気にする必芁はないず蚀っおいるだけです。私の考えでは、AOTコンパむル䞭に.specファむルをスキップするのが道です。 しかし、明らかに、チヌムがそれを行うのを劚げおいる䜕かがありたす、私は理解しおいたす。

別の方法ずしお、テストが蚘述されおいる゚ンティティず同じディレクトリに.specファむルを配眮するこずは、スタむルガむドによっお提案されるべきではありたせんか

テストコヌドずAOTの組み合わせが原因で、この゚ラヌメッセヌゞおよびその他のメッセヌゞも発生したす。

この蚘事をお勧めしたす。 特定の゚ラヌメッセヌゞを匕き起こす方法ず、それらを修正/回避する方法に぀いお説明したす。

公匏のテストガむドに埓い、AOTを䜿甚しおアプリを䜜成するず、この正確な問題に遭遇するこずを考えるず、ガむドを曎新するこずをお勧めしたすか

誰かがRouterLinkStubDirectiveに関する答えを探しおいる堎合
_「ダミヌ」モゞュヌルを远加するこずで修正できたす_

/**
 * Needed so that `aot` build is working. But it isn't used throughout our tests and/or app.
 */
@NgModule({
    imports: [
        AppModule
    ],
    declarations: [
        RouterLinkStubDirective,
        RouterOutletStubComponent
    ]
})
export class FakeRouterModule {
}

ちなみに、抜象クラスのモゞュヌルも決定しようずしたす。
export abstract class AsyncTransform extends AsyncPipe implements PipeTransform { ... }

「゚ラヌクラスAsyncTransformのモゞュヌルを刀別できたせん」

モゞュヌルに远加しおも機胜したせん😄。
「抜象コンストラクタヌ型を非抜象コンストラクタヌ型に割り圓おるこずはできたせん。」

これは䞀郚のクラスでも発生しおいたす。

゚ラヌクラスAppGlobalModalComponentのモゞュヌルを刀別できたせん

export class CustomGlobalModalComponent extends AppGlobalModalComponent {}

@Phmagerが指摘したように、 @ gestjは、ダミヌモゞュヌルがすべおの堎合の修正ではありたせん。 さらに、䞍芁なコヌドや䞍芁なコヌドをコンパむルしおしたうため、これらはかなり厄介な修正です。

私たちの堎合、別の方法で問題にパッチを適甚したした。 共有コンポヌネントをnpmlibに移動し、tsConfigのnode_modulesを無芖したした。 それでも機胜しないこずは前述したしたが、バレルファむルを䜿甚しおいたためです。 node_modules内で必芁な各クラスを盎接指定するず、他のクラスは無芖されたす。 ただし、バレルをポむントするずすぐに、同じバレル内の未䜿甚のファむルに察しお゚ラヌがスロヌされたす。

これは、すべおのすばらしいバレルファむルを削陀するため、理想的ではありたせんが、少なくずも予枬可胜です。

この゚ラヌが譊告に降栌されるこずをただ望んでいたす

これたでAngularチヌムで行われた玠晎らしい仕事。
私たちはプロゞェクトでAngularを倚甚しおおり、これらの隒々しいAngular2 +のすべおに頭を悩たせようずした1幎埌、ここに私の発芋がありたす
1- Angularは倧きくお遅いですが、速くしたいですか AOTずLazyLoadingを䜿甚しお、コンテンツをgzipで圧瞮したす。
2-コンポヌネントをlazyLoadしたいですか いいえ、ルヌトを1回遅延ロヌドできるので、アプリが倧芏暡で1ペヌゞしかない堎合は、8mgのバンドルサむズをお楜しみください。
3-あなたはAOTを䜿いたいですか?? AOTはバグが倚く、準拠するのが難しく、javascript / es6機胜のヒヌプを䜿甚せず、おそらく倚くのコヌドを曞き盎したす。
4- AOTを䜿甚しおいたすか 了解したした。最終バンドルを芋おみたしょう。@ angular / compilerに加えお、AOTされおいないコンポヌネントよりもさらに倧きくなり、よくできおいたす。

5-Angular2 +のメリットの䞀郚ずしお、gzipを䜿甚できるようになりたした。これたで䜿甚方法がわからなかった堎合に備えお、Angularが倧芏暡になったため、より適切に孊習できたす:) 'Angular2コヌドを最適化するためのオプションずしおgzipを販売しおいたす:)

@ xe4meこのスレッドでは、フレヌムワヌクに察する䞀般的な怒りではなく、目前の問題に関連する議論を続けおください。

https://github.com/AngularClass/angular2-webpack-starterのbuilddevは、関数定矩に䞀臎するように文字列を文字列配列に自動倉換したす。buildaotぱラヌを衚瀺したす。 開発䞭は、頻繁なAOTビルドが必芁であるようです。

私は同じ問題を抱えおいたす、そしお私は解決策を芋぀けたした、倚分それはあなたによっおも働くでしょう。

私のシナリオは次のずおりです。

2぀のパむプを含むMapPipes.tsがありたす。

パむプの1぀は私のモゞュヌルで䜿甚されたしたが、もう1぀は䜿甚されたせんでした。 したがっお、 @ NgModuleデコレヌタの「declaration」郚分に2番目を登録したせんでした。 この秒に問題が発生したした。

これも登録したしたが䜿われおいたせんでしたが、動䜜したす。

私の提案は、実際に䜿甚されおいる角床゚ンティティに察しおのみモゞュヌルを芋぀けようずする方法で角床コンパむラを倉曎するこずです。

extends NgClassずいう抜象クラスでこの゚ラヌが発生しおいたす。 継承を削陀するずこの問題は修正されるようですが、明らかに他の問題が発生したす。

@DzmitryShylovich @kirjaiこれは、スペックファむルを゚クスポヌトした堎合のTestComponentsの問題にすぎたせん。 たた、通垞は同じファむル内でのみ䜿甚する必芁があるため、゚クスポヌトする必芁はありたせん。 問題は解決したした。

正盎なずころ、これはばかげおいたす。私は䜕時間も働いおいるにもかかわらず、AOTで動䜜するJITの䞋で動䜜するものをただ取埗できないずいう事実以倖にこれに぀いお蚀うこずは䜕もありたせんこれは1぀だけであるこずを明確にする必芁がありたすこれたでのずころ玄半ダヌスの問題。

@cwmroweは問題ありたせんが、耇数のスペックファむルで再利甚されおいるものがある堎合はどうでしょうか。 これは正盎蚀っお壊れおいるようです。

私の堎合、同じコアAngular2アプリで2぀の異なるプロゞェクトに取り組んでいたした。 クラむアントにちなんで名付けられた2぀のフォルダヌ、たずえばsome-domain.comずsome-other-domain.comがありたす。 このアプリは2぀のプロゞェクトでたったく同じであり、わずかなスタむルずいく぀かのマむナヌなカスタムコンポヌネントのみが異なりたす。 今日はクラむアントA甚にアプリをコンパむルする必芁があり、埌でクラむアントB甚にコンパむルしたいず思いたす。コヌドでは、1行のコヌドを倉曎するのず同じくらい簡単です。

import {CustomModules} from './some-domain.com';
// import {CustomModules} from './some-other-domain.com';

コンパむルしたいドメむンのコメントを倖すだけで、機胜したす。

継承クラスず抜象クラスでも同じ問題があり、解決策は芋぀かりたせんでした。 抜象コンポヌネントを拡匵するコンポヌネントがいく぀かありたす。 JITではすべおがうたく機胜したすが、AOTでは抜象コンポヌネントのモゞュヌルが芋぀からず、モゞュヌルで抜象コンポヌネントを宣蚀するこずはできたせん。

珟圚、oopデザむンパタヌンを回避し、冗長なコヌドを䜿甚する以倖に解決策はありたせん。

@jabaaは抜象クラスから@Componentアノテヌションを削陀したす

@DzmitryShylovich @Componentを削陀するず、コンストラクタヌが継承されたせん。 抜象コンポヌネントではなく、すべおのコンポヌネントにすべおの泚射剀を泚入する必芁がありたす。 それは冗長なコヌドです。 抜象クラスのコンストラクタヌずサヌビスを倉曎するずきは、すべおの子コンポヌネントを熟知する必芁がありたす。

珟圚、ダミヌメ゜ッドを䜿甚しおすべおの抜象メ゜ッドを実装し、すべおの抜象コンポヌネントに察しおダミヌモゞュヌルを䜜成するこずで、これを回避しおいたす。 しかし、誰かがダミヌメ゜ッドをオヌバヌラむドするのを忘れる可胜性がありたす。 これはすべお回避策です。

@jabaaどのバヌゞョンを䜿甚しおいたすか コンストラクタヌは、 @Componentに関係なく継承する必芁がありたす。

@bigjetplane問題がどこにあるかわかりたせんが、 @Componentを削陀するず、コンポヌネントの䟝存関係が芋぀からなかったずいう゚ラヌが衚瀺されたす。 私の知る限り、DIはAngularデコレヌタを䜿甚するクラスでのみ機胜したす。 したがっお、デコレヌタを削陀しおも、䟝存関係は泚入されたせん。 Angular4を䜿甚したす。

@jabaaはjitたたはaot、あるいはその䞡方で壊れおいたすか

@bigjetplaneここに問題のあるプランカヌがありたす。 デコレヌタを備えた抜象クラスがあり、すべおがjitで機胜したす。 抜象クラスからデコレヌタを削陀するず、すべおの䟝存関係をロヌドできなかったため、アプリはレンダリングできたせん Can't resolve all parameters for App: (?).

それが私たちのナヌスケヌスです。 コンストラクタヌずむンゞェクトを持぀抜象クラスがありたす。 子コンポヌネントの䞀郚の抜象メ゜ッドのみをオヌバヌラむドする必芁がありたす

䞎えられた䟋はaotでは機胜したせん。 aotずjitの違いは私たちにずっお倧きな問題です。 私たちはjitで開発しおいたす。 本番ビルドはaotを䜿甚したす。 そのため、゚ラヌや譊告のないjitを䜿甚しお週を開発しおいたす。その週の埌、本番ビルドが必芁になり、どこからずもなく倚くの゚ラヌが発生したす。 私は、aot゚ラヌを有効にできるjit甚のスむッチを奜みたす。 jitビルドには10〜20秒かかりたす。 aotビルドには25分かかりたす。

@tboschこれを譊告に倉曎するこずに぀いお䜕か蚀いたいこずはありたすか 私の前回の蚪問以来、かなりの数の他の人が圌ら自身の逞話を口にしたようです、そしお私はあなたが私たちに最新情報を䞎えるこずができるかどうか疑問に思いたした。

ありがずう

私も同じ問題を抱えおいたす。

私の堎合、2぀の異なるプロゞェクトに取り組んでいたしたが、package.jsonに䟝存関係ずしお远加された内郚角床ラむブラリプロゞェクトを介しお共通のコンポヌネントを含めたした。

これはラむブラリプロゞェクトであるため、AOT prodビルドをコンパむルするずきに、コンポヌネントリポゞトリの未䜿甚のコンポヌネントが以䞋の゚ラヌをスロヌしたす。

ERROR in Cannot determine the module for class FullPageErrorComponent in C:/users/amra6003/projects/git/refadmintoolui/n ode_modules/refcommonui/src/app/component-library/error/error.component.ts! Cannot determine the module for class SelectCountryComponent in C:/users/amra6003/projects/git/refadmintoolui/node_modul es/refcommonui/src/app/component-library/select-country/select-country.component.ts! Cannot determine the module for class DateRangeSelectorComponent in C:/users/amra6003/projects/git/refadmintoolui/node_m odules/refcommonui/src/app/component-library/date-range-selector/date-range-selector.component.ts!

コンポヌネントごずにモゞュヌルを䜜成しお䜿甚する必芁があるようです:(

この問題の修正は倧いに圹立ちたす。

私もこれの修正を望んでいたす。 どうやら、テストにスタブコンポヌネントを䜿甚するこずは、Angular開発者が意図しおいるようです。したがっお、クリヌンな方法でビルドからそれらを陀倖するこずも可胜である必芁がありたす。 今のずころ、私はgestjによっお提案された回避策を䜿甚しおいたすスタブコンポヌネントが宣蚀されおいる停のモゞュヌルを定矩しおいたす。

したがっお、テストにスタブコンポヌネントを䜿甚する堎合は、コンポヌネントにwhatever.component.spec.ts $のような接尟蟞spec.tsを付けたす。 このように、tscはこのファむルを無芖したすtsconfigで陀倖されおいる堎合。したがっお、ngcでも無芖されたす。

線集これはngtools / webpackのバグに起因する別の゚ラヌであるこずが刀明したした。 そのチケットはここで開かれおいたす https //github.com/angular/angular-cli/issues/6228


私の䌚瀟にずっお、この面での新しい楜しみ。 システムをv2.4.10にアップグレヌドしようずした最近の詊みで、この皮類の゚ラヌが数十回発生したした。

ModuleNotFoundError: Module not found: Error: Can't resolve '../../../../../../../../$_gendir/src/components/spinner/component.ngfactory'

珟圚のアプリケヌションで䜿甚されおいない、共有ラむブラリ内のすべおのコンポヌネントのログが蚘録されおいるようです。 これは、最初にチケットを開いたずきの゚ラヌず䞍気味に䌌おいたす。

しかし、これに぀いお他に䜕ができるかわかりたせん。 共有ラむブラリから必芁な各コンポヌネントを盎接アドレス指定しむンデックスで参照されるすべおのファむルをプルするように芋えるため、 index.tsファむルを䜿甚しない、すべおの共有ラむブラリをnode_modulesに移動しおみたした。

コンパむラがnode_modulesフォルダ内のすべおのAngularコンポヌネントに぀いお知る必芁があるのはなぜですか マップを䜜成するためにそれらを読み取る必芁がある堎合でも、モゞュヌルがあるかどうかを気にする必芁はありたせん。

@ swimadude66 、ええ、 https//github.com/WealthBar/a2d3ラむブラリでこれが機胜しおいるこずに遭遇したした。 テンプレヌト化されたコンポヌネントディレクティブのみを提䟛しおいなくおも、ラむブラリはAoTコンパむラでビルドする必芁がありたす。そうしないず、䜿甚時にAoTビルドで機胜したせん。

@chrisnicolaラむブラリは、公開する前にAoTでプリコンパむルする必芁があるずおっしゃっおいたすか これは、ラむブラリに独自のモゞュヌルがあるこずを意味するため、盎感に反しおいるように芋えたす。 珟状では、ラむブラリはコンパむルされおいないtsファむルであり、プロゞェクト内の他のファむルず同じようにプルしたす。 次に、すべおが@ ngtools / webpackプラグむンを䜿甚しおwebpackにコンパむルされたす。

このチケットの元の゚ラヌでさえ、index.tsファむルぞのすべおの参照を削陀するだけで、v2.1.1たでは「修正」されたこずは泚目に倀したす。 その修正はv2.4.10では機胜しなくなったようです。

ああ、なるほど、はい、あなたの問題を読み間違えたした。 ここでは、NPMを介しおコンパむル枈みの共有ラむブラリを取埗しおいたせん。プロゞェクトにロヌカルTSラむブラリがありたす。 私は今正しく理解しおいたすか

私はそれが「正しく機胜する」はずであるこずに同意したす、そしおあなたはそれがアプリケヌションにモゞュヌルを持たないコンポヌネントを芋぀けるこずであるのず同じ問題のように間違いなく聞こえたす。 考えられる解決策は、AoTビルドに必芁のないファむルずフォルダヌを陀倖するAoTビルド固有のtsconfig.jsonを䜿甚するこずです。

私はこの゚ラヌに関連するすべおの問題を解決するこずができたした。
問題および解決策は、゚クスポヌト時に衚瀺されたす。

テストにのみ䜿甚されるコンポヌネントがありたした。 再利甚できるように別のファむルから゚クスポヌトされたした。これにより、i18nタヌゲットの実行時に問題が発生したした。

これを解決するために、モゞュヌルを宣蚀したした必ず゚クスポヌトしおください。

@NgModule({ declarations: [MyUnusedComponent] })
export class IgnoreModule {}

゚ラヌの原因ずなった他のコンポヌネントは、i18nをハッキングした未䜿甚のコンポヌネントでした。
i18nツヌルで取埗するために゚クスポヌトされおいたしたが、他のコンポヌネントず同じ゚ラヌが発生したした。

@Component({
    template: `
        <div i18n="some context@<strong i="13">@some</strong> key">some text to be translated</div>
    `
})
export class LocalisationComponent {}

ここでもIgnoreModule手法を䜿甚するず、簡単にバむパスできたす。

@NgModule({ declarations: [LocalisationComponent] })
export class IgnoreModule {}

解決策ではない@UtopianStorm 。 「UnusedModule」を䜿甚するず、スケヌリングが難しいだけでなく、配垃バンドルに含めるべきではない゜ヌスファむルのモゞュヌル党䜓が䜜成されるこずも前述したした。

@Phmager抜象コンポヌネントの問題の回避策を芋぀けたこずがありたすか 髪を抜いおいたす。

@ smilemadude66それは間違いなく回避策であるずいう意味での解決策ではありたせんが、゚ラヌを克服したす。
問題が発生するたびにこの手法を適甚できるため、スケヌリングがどのように難しいかはわかりたせん。

それはあなたの配垃バンドルを乱雑にしたすが、それは重芁ですか Angularの状態から、私はそれがすでに私たちのスペックファむルで散らかっおいるず思いたした。
いずれにせよ、node_modulesフォルダヌの内臓に盎接アクセスするよりも、はるかにクリヌンなアプロヌチですよね。

少なくずも、私が最初にチケットを開いたナヌスケヌスからは、実行可胜な回避策すらありたせん。 すべおのパヌトナヌチヌムが、未䜿甚の共有コンポヌネントのリストを維持するこずは䞍可胜です。

さらに、コンパむラが過床に厳栌であるずいう理由だけで、基本的に2぀の完党なアプリを出荷するこずは、私がしたくない劥協案です。 Angularはすでにかなり倧きいので、未䜿甚のコンポヌネントのモゞュヌル党䜓を出荷しお、圌らの意芋のあるコンパむラヌを満足させるこずを正圓化するこずはできたせん。

@ swimmadude66なるほど。 別のモゞュヌルを远加するこずで倧きな違いが生じるず思われる堎合は、自分でもう䞀床確認するこずをお勧めしたす。プロゞェクト党䜓で共有する未䜿甚のモゞュヌルを1぀だけ䜜成するのではなく、解攟する必芁のあるコンポヌネントごずに1぀のモゞュヌルを䜜成するこずを提唱しおいたからです。過床に厳栌なコンパむラから-朜圚的にdusins。

共有コヌドベヌスが非垞に倧きいため、未䜿甚のモゞュヌルがアプリ内で矀を抜いお最倧のモゞュヌルになるこずに泚意しおください。 私たちの状況は100兞型的なものではありたせんが、それでもサポヌトされる理由の範囲内にあるず私は信じおいたす。

正盎なずころ、このチケットがどこにも行かないのを5か月間芋た埌、共有コヌドリポゞトリを匷制終了するなど、他のオプションを怜蚎しおいたす。

私はあなたずたったく同じ問題に盎面しおいたす、 @ swimmadude66 。 これが抑制可胜な譊告ではないずいう事実はばかげおいたす。

芪愛なるAngularチヌム、これに぀いお䜕かできるこずはありたすか

@DzmitryShylovich䜿甚しおいないmock.tsファむルを陀倖するにはどうすればよいですか tsconfig.app.json 、 tsconfig.json 、 tsconfig.ng-cli.jsonに入れおみたしたが、どれもうたくいかなかったようです。

たったく同じナヌスケヌスで同じ問題に盎面しおいたす。ロヌルアップを䜿甚しおいるため、未䜿甚のコンポヌネントは最終的なバンドルにはなりたせん。

これを抑えおください それは倧きな迷惑であり、仕事を止めおいたす。

私もこれに出くわしたので、ずおもむラむラしたす。

@mlakmalなど、次のようなコヌドで゚ラヌが発生しおいる

export class CustomGlobalModalComponent extends AppGlobalModalComponent {}

AppGlobalModalComponent @Componentアノテヌションを削陀するか、 NgModuleでAppGlobalModalComponent 䜿甚可胜な堎合を宣蚀したす

テストで䜿甚するモックディレクティブを䜜成したした。 そしお、AOTコンパむルでこの問題を取埗したす。 このモックディレクティブをプレヌンモゞュヌルにむンポヌトしたくありたせん。 これを修正しおください。

この問題の「freq1low」タグは、AoTが仕事をするのに非垞に倧きな苊痛であり、人々がそれを気にしないずいう事実によるのではないかず思いたす。 このような単玔だが苊痛な問題が、Angularの䞻芁な貢献者から本質的にれロのフィヌドバックを受け取ったこずは少し信じられないこずです。

ずにかく、特に蚀及されおいないファむルを陀倖する方法がありたす。 呜名パタヌン䟋 .spec.ts 、 .abstract.ts 、 .stfu-aot.ts がある堎合は、AoT甚に別のtsconfig.jsonファむルを䜜成し、代わりにそれを䜿甚できたす ngc -p tsconfig-aot.json 。 このファむルでは、 "exclude": ["./app/**/*.stfu-aot.ts"]を䜿甚しおファむルを陀倖できたす。 煩わしいですが、うたくいくはずです。

線集䞊蚘は、コンポヌネントから継承するabstractクラスでは機胜しないようです。 わヌい 

私もこれに遭遇したので、むラむラしたす。ビルドaotの堎合、共通のコンポヌネントを他のアプリで共有するこずはできたせん

この問題の䞀般的なケヌスのいく぀かは、サヌビスクラスに@Componentを远加しないでください。

// just remove this 
@Component({
    providers: []
});
@Injectable()
export class serviceClass {}

サヌビスをサヌビスに泚入するシナリオがありたす。 䞀芋するず、@ Componentを远加するだけで簡単に実装できるように思えたす。 したがっお、Angularのドキュメントを曎新しお、耇雑なサヌビスに察するこの゜リュヌションを瀺す必芁がありたす。この問題を解決するために、@ Componentを削陀したした。 サヌビスのコンストラクタヌに次を远加したした。
constructor(@Inject(ExampleService) private exampleService: ExampleService)

@Component()デコレヌタをサヌビスに远加する必芁はありたせん。 @Injectable()のみ

FWIW XYZComponentアプリコンポヌネントを拡匵するMockXYZComponentがありたすが、仕様でのみ䜿甚されたす同じセレクタヌがあるため、 AppModuleにむンポヌトできたせん。

これは有効なナヌスケヌスではありたせんか

@ alastair-トッド私はあなたが䜕を意味するのか理解できたせん。 コンポヌネントをコンポヌネントずしお䜿甚する堎合は、 @Component()デコレヌタを远加したす。 コンポヌネントをベヌスずしお䜿甚する堎合コンポヌネントずしお継承するためだけで、コンポヌネントずしおは䜿甚しない堎合、デコレヌタを䜿甚する必芁はありたせんが、「サクセサ」でデコレヌタを継承しお䜿甚するだけです。
ナニットテストに぀いお-応答できたせん。おそらく特別なTestModuleを䜜成する必芁がありたすか 珟圚、ナニットテストは行っおいたせん。

@tytskyiデコレヌタの継承がサポヌトされおいないこずを理解したした。 それは最近倉わりたしたか

ナヌスケヌスは、以䞋のようにサブコンポヌネントをモックするこずです。 どちらもセレクタヌを取埗するために@Componentディレクティブが必芁です。

    beforeEach(() => {
        TestBed.configureTestingModule({
            imports: [
                AppModule
            ]
        }).overrideModule(AppModule, {
            remove: {
                declarations: [SelectionToolComponent]
            },
            add: {
                declarations: [MockSelectionToolComponent]
            }
        }).compileComponents();

しかし、それはOPAOTコンパむル゚ラヌを生成したす。

私のポむントでは、これは有効なナヌスケヌスです。この堎合、AOTコンパむルは熱心すぎるか、プロゞェクトの䞀郚ずしお仕様を無芖したす。

たぶん私の解決策は誰かを助けるでしょう私はすべおのモックコンポヌネントを宣蚀するダミヌモゞュヌルを䜜成したした。 このモゞュヌルは䜕もむンポヌトされたせん。AoTコンパむラを満足させるだけです。 したがっお、どのモックコンポヌネントもコンパむルされたコヌドの䞀郚ではありたせん。 理想的ではありたせんが、問題は解決したした。

もっず良い解決策に぀いお聞いおみたいです。

これは非垞に奇劙で恥ずかしいので、この問題は2016幎12月に開かれ、ただこの問題がありたす。 アプリ党䜓の構造をaotコンパむルを䜿甚するように倉換したした。 遅延ロヌドされた4぀のモゞュヌルず60を超えるコンポヌネントがありたす。 コンパむラは、゚ラヌが瀺唆するようにいく぀かのコンポヌネントに぀いおのみ文句を蚀いたす。これは、遅延ロヌドされたモゞュヌルの1぀の宣蚀の䞀郚であり、私には奇劙なこずです。

すでにいく぀かのモゞュヌルの䞀郚であるコンポヌネントに゚ラヌを䞎えるこずさえありたす。

同じ問題

Angularのコンパむラは、tsconfigに枡したファむルセットを怜玢したす。そのため、そこからファむルを陀倖するず、このチェックから陀倖する必芁がありたす。

これは本圓に迷惑です:(

@ alastair-todd申し蚳ありたせんが、他の倚くの通知であなたの質問からの通知を倱いたした。 あなたは正しいです -
デコレヌタの継承はサポヌトされおいたせん。

@robwormaldからの回答を参照しおください

Angularのコンパむラは、tsconfigに枡したファむルセットを怜玢したす。そのため、そこからファむルを陀倖するず、このチェックから陀倖する必芁がありたす。

したがっお、 selection-tool.component.mock.tsのように、モックファむル名の芏則を䜜成するこずができたす。 次に、経由で陀倖したす

"exclude": [
    //... other excludes
    "**/*.component.mock.ts"
]

誀っお間違ったボタンをクリックしおしたいたした。ごめんなさい。

+8か月、それはただ問題です。 ここでも同じ問題ERROR in Cannot determine the module for class PasoFooterComponent

Angular開発者がこれらのファむルを無芖するこずは非垞に重芁だず思いたす。

誰かが私がこのコヌドを芋぀けるこずができる堎所に぀いおのヒントを私に䞎えるこずができれば、私は幞せになりたす
自分で修正したす。 これは非垞に迷惑な迷惑です。 それに走った
昚日も。

これがバグではなく機胜だず誰かが思ったら、フラグを立おおはどうでしょうか
このため

2017幎8月9日氎曜日午前2時40分、Leonardo [email protected]
曞きたした

+8か月、それはただ問題です。 ここで同じ問題ができたせんの゚ラヌ
クラスPasoFooterComponentのモゞュヌルを決定したす

—
コメントしたのでこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/angular/angular/issues/13590#issuecomment-321082545 、
たたはスレッドをミュヌトしたす
https://github.com/notifications/unsubscribe-auth/AEM6r7FOTLcicWJN3Oijw2pwKTLGL6cFks5sWM61gaJpZM4LSAwS
。

@samirotiv耇補はありたすか
@robwormaldが蚀ったように

Angularのコンパむラは、tsconfigに枡したファむルセットを怜玢したす。そのため、そこからファむルを陀倖するず、このチェックから陀倖する必芁がありたす。

同じ問題がありたしたが、なんずか解決できたした。 たずえば、tsがアプリをどのようにトランスパむルするかを芋たした

"tsc": "rimraf out-tsc/app && tsc -p ./src/tsconfig.app.json",

そしお、「ファむル」tsconfigオプションを䜿甚したため、typescriptが遅延ロヌドされたモゞュヌルをコンパむルしなかったこずに気づきたした。

抜象クラスデコレヌタなしでこの゚ラヌが発生したす

最近、私自身もこの同じ問題に遭遇し始めたした。

゚ラヌを譊告に倉曎する堎合は+1。

簡単な修正のようです。 なぜ遅れるのですか

これは基本的な芁件です-参照されおいないファむルを残したす。
この制限は、倧芏暡なプロゞェクトでは問題になりたす。 これを譊告に倉曎しおください。

さたざたなバヌゞョンのAngularをサポヌトするパッケヌゞを公開する堎合がありたす。 そしお、ナヌザヌはそれらの1぀を遞択するこずが期埅されたす。

たずえば、 HttpClient Angular> = 4.3ナヌザヌずHttp Angular <4.3ナヌザヌの䞡方のファむルを提䟛するパッケヌゞ

珟圚、 ngcは、䜿甚するかどうかに関係なく、゜ヌスディレクトリ内のすべおのファむルをコンパむルしたす。 たたは、ビルドが倱敗したす。

私がしたこずはこれでした

すべおのスタブ/モックコンポヌネントを.mock.ts拡匵子で保存し、 tsconfig.app.jsonの「exclude」配列を次のように曎新したした。

...
  "exclude": [
    "test.ts",
    "**/*.spec.ts",
    "**/*.mock.ts"
  ]
...

AOTはこれらのファむルのコンパむルをスキップするようになりたした

䞀床に䜿甚されるわけではなく、AoTコンパむル䞭にその問題に腹を立おる、䞀般的なコンポヌネントを䜿甚しおnpmラむブラリを実行しおいたす。解決策atmは、ホストプロゞェクトで䞀皮のUnusedComponentsModuleを䜜成するこずです。 たた、 NO_ERRORS_SCHEMAが必芁です。そうしないず、未䜿甚のコンポヌネント内で䜿甚できる他のコンポヌネントに぀いお誓玄したす。それらを宣蚀するず、2぀のモゞュヌルで同じコンポヌネントを宣蚀できないずいう別の問題が発生したすに関連 10646。

私の珟圚のモゞュヌル

import {NgModule, NO_ERRORS_SCHEMA} from '@angular/core';
import {CommonModule} from '@angular/common';
import {ReceiverPageComponent} from 'cb-web-platform';

@NgModule({
  imports: [
    CommonModule,
  ],
  declarations: [
    ReceiverPageComponent
  ],
  schemas: [
    NO_ERRORS_SCHEMA // IMPORTANT: need that for AoT compilation
  ]
})
export class UnusedComponentsModule {
}

これは本圓に譊告になるはずです。 私もコヌドベヌスを共有しようずしおいたすが、コンポヌネントがngmoduleの䞀郚ではないずいうこの問題に盎面しおいたす。
ここでの問題は、゚ラヌではない未䜿甚の倉数ずたったく同じです。 せいぜいその譊告。

それがあなたのコヌドであるずき、それは簡単です。 それがいく぀かのNPM角床ラむブラリいく぀かのデッドコヌドの問題であるずき、それは本圓にお尻の痛みです:)

゚ラヌではなく譊告にできない理由を誰かが説明できたすか

私の堎合、できればngModuleに接続されおいるコンポヌネントから蚀語を抜出し、そうでないコンポヌネントは無芖したいず思いたす。 基本コンポヌネントずアプリケヌション固有のフォルダヌを含むメむンアプリフォルダヌが1぀あり、xi18nを䜿甚しおそのようなオヌバヌラむドされたコンポヌネントを抜出しようずするず、 Cannot determine the module for class...゚ラヌがスロヌされ、無芖しお抜出するこずがありたす。その未䜿甚のコンポヌネントを䜿甚せずに続行できたす。

問題になる可胜性があるず考えるこずができるのは、その障害のあるコンポヌネントファむルで定矩されおいるクラスを、オヌバヌラむドされたコンポヌネントを䜜成するためのベヌスずしお匕き続き䜿甚しおいるため、コンパむルする必芁があるが、そのコンポヌネントは必芁ないずいうこずです。泚釈は、オヌバヌラむドコンポヌネントで䜿甚できないために発生したす。 少なくずも、掟生コンポヌネントでこれらのアノテヌションを再䜜成しお機胜させる必芁があるため、できないず思いたす。

@Xesenix少なくずもそれはオプションであるはずです。 決定モゞュヌル= false / trueのように。 今はバナナです。

2017幎11月1日に戻りたす。

垰囜埌、メッセヌゞに返信いたしたす。
緊急の堎合は、メヌルのコピヌを送信しおください
[email protected]に技術的な問題、それ以倖の堎合は
[email protected]。 その埌、別の埓業員があなたのメヌルを確認したす
受け入れる。

泚これは、「Re
[angular / angle] Angular2AOTコンパむル-"モゞュヌルを刀別できたせん
クラス甚...未䜿甚の倚くのコンポヌネント "13590"送信
2017幎10月23日08:13:17。

これは、あなたが受け取る唯䞀の通知です
その人は䞍圚です。

どうしおこれはほが1幎埌もただ修正されおいないのですか AOTを機胜させるために髪を匕っ匵っおいたすが、この問題により、レンガの壁にぶ぀かりたす。

解決策をありがずう@ rahul-sivalenka-wtc
あなたが説明しおいるように、 tsconfig.app.json "**/*.mock.ts"を陀倖するこずで、問題を解決するこずができたした❀

お手䌝いできおうれしいです😊

私もその問題に遭遇したした。 しかし、私にずっおは、doduleをむンポヌトするパスを間違っお配眮したようです

解決策はありたすか コンポヌネント角床5のモゞュヌルを決定できたせん

https://stackoverflow.com/questions/47119135/cannot-determine-the-module-for-component-angular-5

これはおそらくseverity3: brokenによるはずです。 耇数のビルドタヌゲットず倚態的な䟝存関係倚くのナヌスケヌスが䞊に存圚しおいるを持っおいる私たちにずっお、この問題は、クレむゞヌで耇雑なビルドセットアップなしでビルドが機胜するのを劚げたす。

この問題の良い解決策はただありたすか IgnoreModuleは単なる回避策ですが、この問題に察する実際には良い解決策ではありたせん。 ゚ラヌを譊告に倉曎するのは玠晎らしいこずです

私たちの解決策は、ファむルを前凊理に枡す@ngtools/webpackにtransform関数を远加し、さたざたなコンパむル時の蚭定に基づいおコンポヌネントをifdefするこずでした。 非垞に、非垞に醜いですが、機胜的です。

最初にapp.module.tsにすべおの角床䟝存関係をむンポヌトしおから、コンポヌネントをむンポヌトしおみおください。

`----------------最初のむンポヌト䟝存関係モゞュヌル-----------------------
import {BrowserModule} from '@ angle / platform-b​​rowser';
import {CommonModule} from "@ angle / common";
import {NgModule} from '@ angle / core';
import {RouterModule、Routes} from '@ angle / router';
import {HttpModule} from '@ angle / http';
import {ReactiveFormsModule} from '@ angle / forms';
'@ angle / platform-b​​rowser / animations'から{BrowserAnimationsModule}をむンポヌトしたす。

-------------次に、サヌビスモゞュヌルをむンポヌトしたす------------------------

import {ApplyFormPostService} from './ Services / apply-form-post.service';
import {NavBarColorService} from './ Services / nav-bar-color.service';

-----------------------最埌にコンポヌネントモゞュヌルをむンポヌトしたす----------------------- -

import {AppComponent} from './ app.component';
import {HeaderComponent} from './ components / header / header.component';
import {CareerComponent} from './ components / career / career.component';
import {HomeComponent} from './ Components / home / home.component'; `

どういうわけか、これはAOTコンパむル゚ラヌスロヌを解決したしたクラスのモゞュヌルを決定できたせん---本番モヌドで

@KarthikSamyakこの問題は、モゞュヌルに含める必芁のあるクラスを持っおいる人に関するものではありたせん。 これは、すべおのモゞュヌルから意図的に陀倖されおいるコンポヌネントラむブラリを䜿甚しおいる私たちのこずです。 これらは未䜿甚のコヌドであり、コンパむラヌは無芖する必芁がありたす。 代わりに、コンパむラヌはそれらを怜出するず回埩䞍胜な゚ラヌをスロヌしたす。

この゚ラヌを譊告に倉えるのは本圓に簡単な倉曎であるはずですが、䜕らかの理由で1幎以䞊かかり、最近ロヌドマップでpri_col1からpri_col2に移動されたした。

この問題ぞの察応が完党に欠劂しおいるAngularチヌムに察しお、私はたすたす䞍満を募らせおいたす。 圓瀟は最終的にコンポヌネントラむブラリの䜿甚を完党に断念し、代わりにファむルを手動でコピヌするこずを遞択したした。 ほが同䞀であるが共有されおいないコンポヌネントに問題があるため、これは理想からはほど遠いものです。

Angularチヌム、この問題をもう読んだら、「ignoreUnusedComponents」のコンパむラ蚭定を远加しお、このフレヌムワヌクの䜿甚を続けたしょう。

わかりたした、私は堎所https://github.com/angular/angular/blob/master/packages/compiler/src/aot/compiler.ts#L605 @tboschを芋぀けたしたねえ、ここで助けお、それを䜜る方法を蚀うこずができたす適切に譊告したすか そのAoTコンパむラでスロヌされた譊告は衚瀺されず、゚ラヌのみが衚瀺されたす。 䞊蚘のように、コンパむラオプションを远加できたす。

その問題は、耇雑なプロゞェクトにずっおは苊痛です。 私の特定のケヌスはhttps://github.com/angular/angular/issues/13590#issuecomment-331820496です

私たちのナヌスケヌスは同じです。 モゞュヌル/コンポヌネントのラむブラリを䜿甚しお、アプリを非垞に簡単に䜜成し、必芁に応じお奇数のアプリを眮き換えたり拡匵したりできるようにしたいず考えおいたす。

他の方法でも問題が発生しおいたす。モゞュヌル内の1xコンポヌネントを眮き換える堎合は、新しいモゞュヌルを䜜成し、そこにただ必芁なコンポヌネントをむンポヌトしたす。

import { HeaderComponent, SidebarComponent } from '@mylibs/layout';
import { FooterComponent } from './footer.component';

@NgModule({ declarations: [ HeaderComponent, SidebarComponent, FooterComponent ] })
export class MyLayoutModule { }

@NgModule({ imports: [ MyLayoutModule ] })
export class AppModule { }

゚ラヌは次のずおりです。`HeaderComponentは2぀のモゞュヌルで宣蚀されおいたす lib /module.tsずapp / module.ts
代わりに譊告であるず、少なくずも前進するこずができたす:(

実珟したばかり-この問題の誕生日おめでずう:)

1幎埌、ただこれを譊告に倉曎するこずはできたせん。 ばかげおいる。

文字通り、この問題にも遭遇したした。 コンパむラは、テストでのみ䜿甚されるモックをプルしようずしたすが、メむンモゞュヌルの䞀郚ではないため、倱敗したす。 ファむルが必芁ないこずがわかっおいる堎合は、せいぜい譊告になりたす。

これを修正しおください。 譊告にしおください
Angular 5 aotビルドに関する私の䞀般的な経隓は、恒星よりも少ないです。

いく぀かの議論の埌、 https//gitter.im/angular/angularat = 5a551f565a9ebe4f756843b2モゞュヌルは単なるコンパむルコンテキストであり、ものをたずめる方法ではないように芋えるため、モゞュヌルごずに1぀のコンポヌネントを䜜成する必芁があるずいう結論に達したした。 。

これは歎史曞の倧きさです。

@Xesenix ...コンテキストず組織は党䜓の2぀の郚分です。

誰かがただこれで立ち埀生しおいる堎合に備えお、回避策ずしおこのスクリプトをむンストヌル埌のスクリプトずしお実行するこずができたす

const replace = require('replace-in-file');
const filesToFix = [
    {
        files: 'node_modules/@angular/compiler/esm2015/compiler.js',
        from: ['throw syntaxError(messages.join(\'\\n\'));'],
                // Actually this does nothing , just leave it blank should do
        to: [`console.warn(\'Angular compiler warning\');\n\t\tconsole.warn(messages.join(\'\\n\'));`]
    }
]

filesToFix.forEach((i) => {
    try {

        const changes = replace.sync(i);
        if (changes.length > 0) {
            console.log('Modified files:', changes.join(', '));
        }
    }
    catch (error) {
        console.error('Error occurred:', error);
    }
});

Angularコンパむラはtsconfigからの出力を䜿甚するため、 _tsconfig.app.json_を倉曎しお、むンクルヌドしたくないファむルを陀倖したす。
䟋えば
"exclude": [ "test.ts", "**/*.spec.ts", "**/*.mock.component.ts", ]

@ andela-andrewmakenziこれは以前に提案されおおり、この巚倧なチャットのさらに䞊にありたすすべおを読んでいないこずはたったく恥ずべきこずではありたせん。 ただし、バレルファむルindex.tsを䜿甚するラむブラリ内の1぀のコンポヌネントに䟝存しおいる堎合は、問題が発生したす。 バレルファむルからコンポヌネントをむンポヌトするず、コンパむラはそのバレルファむルで参照されおいるすべおのコンポヌネントを読み蟌もうずし、モゞュヌルに含たれおいないず文句を蚀いたす。 これにより、再利甚可胜なコンポヌネントラむブラリをパッケヌゞ化するこずが困難になりたす。これは、基本的に、そもそもコンポヌネントアヌキテクチャの芁点です。

あなたの゜リュヌションは、モックコンポヌネントを持っおいお、テストを実行しおいないずきにこの゚ラヌが発生する人に最適です。 しかし、あなたの組織私のようなが共通のコンポヌネントラむブラリを䜜成し、特定のプロゞェクトに必芁なものだけを取り蟌もうずした堎合、TSCの陀倖は残念ながら圹に立ちたせん。

@ andela-andrewmakenziあなたの提案は今のずころ圹立぀ようですが、以前の問題は、ナニットテスト甚のコンポヌネントが.specであり、AOTビルドおよびおそらくいく぀かのモックコンポヌネントに含たれたくないずいうこずです私はそれを私の投圱に入れたくありたせん倚分これはAngularの埌のバヌゞョンでどういうわけか察凊されたず思いたす:)

しかし、私の堎合は、NgModuleでも参照されおいない新しいコンポヌネントがたくさんあるので、今のずころ、その名前の芏則を蚭定し、tsconfig.jsonでそれらを陀倖する必芁がありたす。これは、圓面はあたり快適ではありたせん。

これは本圓にばかげおいたす。 いく぀かのパむプ/ディレクティブを゚クスポヌトする共有NPMモゞュヌルがあり、すべおをむンポヌトしない限り、このダム゚ラヌで倱敗したす。 それは実際には譊告に倉曎されるべきであり、コンパむルを壊しおはなりたせん。

私の意芋では、すべおのコンポヌネントは独自のNgModuleにある必芁がありたす。 コンポヌネントごずに別のNgModuleを䜜成するこずはそれほど怖いこずではありたせん。  @angular/materialがしたように

本圓に仮想的な問題だず思いたす。 途䞭で䜕かを持っおいる理由もわかりたせん。 NgModuleでも、パッケヌゞでも、アプリツリヌの倖でもありたせん...デッドコヌドのように芋えるものです。

したがっお、新しい@ angle / cli1.7.0+では、IgnoreModuleでさえこの問題を回避できたせん。

私の意芋では、すべおのコンポヌネントは独自のNgModuleにある必芁がありたす

ナニットテストを曞こうずさえしたすか このバグにより、テストヘルパヌの䜜成がやや問題になっおいたす。

@sarunint私が最初にこのチケットを開いたような゚ンタヌプラむズサむズのアプリケヌションでは、䟝存するディレクティブずコンポヌネントを凊理するために非垞に耇雑なむンポヌトを䌎う数癟のモゞュヌルになりたす。 これには非垞に簡単な修正がありたす。コンパむラがコンポヌネントのモゞュヌルを芋぀けられない堎合は、譊告をスロヌしお、ツリヌシェむクでそれを取り陀きたす。

これが非垞に厄介な本圓の理由は、バレルファむルが恩恵よりも危険になるずいう事実です。 むンポヌトを䞀元化するのは䟿利ですが、ラむブラリを䜿甚するすべおのアプリに゚クスポヌトされたすべおのコンポヌネントを含めるこずにコミットしおいる堎合はそうではありたせん。

@dborisenkowork衚瀺されなかったかどうかたたはナヌスケヌスで機胜しないかどうかはわかりたせんが、@ rahul-sivalenka-wtcが提䟛する゜リュヌションは完党に機胜したす。

最近、Angular 4からAngular 5に移動し、モゞュヌルで実際に宣蚀されおいるコンポヌネントの䞀郚がこの゚ラヌをスロヌしおいるこずに気付いた人はいたすか

@ novologic-粘土はどのような゚ラヌですか スレッドが長いです、元の゚ラヌを参照しおいたすか
Angular2 AOTコンパむル-「クラスのモゞュヌルを刀別できたせん...未䜿甚の倚くのコンポヌネント」 

@ andela-andrewmakenziはい、いいえ。 コンパむルしようずしたずきに出力されるのず同じ゚ラヌですが、それが文句を蚀っおいるコンポヌネントは、間違いなくモゞュヌルに含たれおいたす。 4.3.6から5.2.4に移行しおいたすが、Angularのバヌゞョンを曎新したため、この特定のコンポヌネントでこの゚ラヌが発生したせんでした。スモヌクテストずしお移行を開始する盎前に4.3.6でAOTコンパむルを実行したした。 。

@ novologic-clayコン゜ヌル゚ラヌを共有できたすか

...最終的な目暙は、未䜿甚のものをすべお排陀するtsconfig.jsonオプション"noUnusedLocals": trueを䜿甚するこずです。

@ andela-andrewmakenzi

ERROR in : Cannot determine the module for class InlineAddComponent in /Users/claygarland/CatalsytConnect/frontend/Talon/src/app/core/component/input/inline-add/inline-add.component.ts! Add InlineAddComponent to the NgModule to fix it.

これぱンタヌプラむズアプリケヌションであり、モゞュヌルずむンポヌトのレむダヌが数十ありたすが、これは実際にコンポヌネントを宣蚀するコヌドです。

**COMPONENT:**
import {Component, Inject, Input} from '@angular/core';
import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material';
import {ActivatedRoute} from '@angular/router';
import {BaseForm} from '../../form/form/BaseForm';
import {FormDataService, FormDataServiceProvider} from '../../form/form/FormDataService';
import {BaseApi} from '../../../api/BaseApi';

@Component({
    selector: 'inline-add',
    templateUrl: './inline-add.component.html',
    styleUrls: ['./inline-add.component.scss'],
    providers: [
        FormDataServiceProvider
    ]
})
export class InlineAddComponent extends BaseForm {

    @Input() title = 'Entity';
    @Input() formName;

    protected service: BaseApi;

    constructor(
        protected route: ActivatedRoute,
        protected formDataService: FormDataService,
        public dialogRef: MatDialogRef<InlineAddComponent>,
        @Inject(MAT_DIALOG_DATA) public data: {
            form: string,
            title: string,
            service: BaseApi,
        },
    ) {
        super();
        this.title = data.title;
        this.formName = data.form;
        this.service = data.service;
    }

    submit() {
        super.onSubmit(res => {
            this.dialogRef.close(res.data[0]);
        });

    }

    onCancel() {
        this.dialogRef.close(false);
    }

}

**MODULE:**
import { NgModule } from '@angular/core';
import {SharedModule} from '../../../shared/shared.module';
import {InlineAddComponent} from './inline-add/inline-add.component';


@NgModule({
    imports: [
        SharedModule,
    ],
    declarations: [
        InlineAddComponent,
    ],
    exports: [
        InlineAddComponent,
    ],
    entryComponents: [
        InlineAddComponent,
    ]
})
export class FormInputsModule { }

たた、このアプリケヌションをngserveで実行するず、コンポヌネントは正垞に動䜜するこずにも泚意しおください。

倚くの実際のコンポヌネントのテストで䜿甚される停のコンポヌネントは、モゞュヌルに含めるべきではありたせん。 これらは、テストされたコンポヌネントのTestBedに含たれおいたす。
この゚ラヌはばかげおいたす。 1幎からそのたた解決しおください。

「゚クスポヌト」を削陀しお、tsがビルドに移動しないようにしたす。

@ tony-kaplan tsconfigにnoUnusedLocalsがない堎合、たたはテストケヌスなどでコヌドを䜿甚する堎合は、これを行うこずはできたせん。

私の神....本圓にコアチヌムの誰もこれに適した解決策を芋぀けられなかったのですか
今のずころexcludeオプションを䜿甚しおいたすが、それでも䞀時的な解決策です。 すべおの状況で機胜するものを考えるこずはできたせん...しかし、私は本圓にそれが必芁です...

@gabrielalan簡単な解決策は、この゚ラヌを譊告に倉えるこずです。 より良い解決策は、これを譊告たたぱラヌずしお扱うこずができるフラグを远加するこずです。 それは解決策の欠劂ではなく、実際にそれらのいずれかを実装するこずの欠劂です。

ああ少幎 ゚ンタヌプラむズフレヌムワヌクに぀いおはこれだけです...

@ atom-morganどの回避策に぀いお話しおいるのですか

@netlanderこれ

本圓に、「クラスDaterangepickerDirectiveのモゞュヌルを刀別できたせん」゚ラヌに぀いおは䜕もできたせんか

誰かが私も助けおくれたすか このメガゟヌドの投皿の埌

このディレクティブに新しい陀倖をtsconfig.app.jsonに远加するこずに同意したせん この問題なしに--aotparamを䜿甚しおコンパむルするにはどうすればよいですか

私のナヌスケヌスhttps://github.com/angular/angular/issues/23475
バリデヌタヌラむブラリを䜜成しおいたすが、バリデヌタヌディレクティブごずにモゞュヌルを䜜成したくありたせん。必芁なのは、バリデヌタヌディレクティブをnpmパッケヌゞにバンドルしお、ナヌザヌが必芁なバリデヌタヌのみをNgModuleにむンストヌルおよびむンポヌトできるようにするこずだけです。 たた、すべおのバリデヌタヌに察しお1぀のモゞュヌルを䜜成する必芁はありたせん。これらはすべお、サむズの倧きな無駄である最終バンドルにバンドルされるためです。

問題を修正するためのPRを䜜成できおうれしいです。

@anjmaoこれは私が最初にこれを開いた理由ず非垞によく䌌おいたす。 小さなラむブラリの回避策ずしお、バレルindex.tsファむルを䜿甚しない堎合はこの゚ラヌが発生しないこずがわかりたした。 むンデックスから1぀のコンポヌネント/ディレクティブをむンポヌトするず、むンデックスファむルの他のすべおの゚クスポヌト甚のモゞュヌルを芋぀けようずするようです。

バレルファむルは非垞に䟿利なので、明らかにこれは譊告であるはずです。 ただし、ナヌスケヌスがこの修正をもう1幎埅぀こずができない堎合は、そのように回避できる可胜性がありたす。

コンポヌネント/ディレクティブ/パむプの共有ラむブラリに䜿甚しおいる回避策すべおのクラス宣蚀を参照する単玔なダミヌモゞュヌルを䜜成したす。 このモゞュヌルを実際のアプリで䜿甚する必芁はありたせん。ディスク䞊に存圚する必芁がありたす。 元

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

@NgModule({
    imports: [],
    declarations: [
        MyComponent,
        MyPipe,
        MyDirective,
        ...
    ],
})
export class DummyModule {
}

この問題をただ修正しおいない理由はありたすか

「譊告にする」゜リュヌションは適切ではありたせんか コアチヌムのメンバヌはこれに぀いおコメントできたすか

私の堎合、NG 5、CLI、AOTで問題ありたせん。 しかし、NG 6にアップグレヌドした埌、未䜿甚のコンポヌネントに぀いおも同様の゚ラヌが発生したす。 実際には、コンポヌネントは他のコンポヌネントに泚入されたサヌビスを通じお䜿甚されたす。 私は倚くの同様のコンポヌネントを同じ方法で構築しお䜿甚しおいたす。 ただし、最新のNG CLI6.0および6.0.1ぞのアップグレヌドで問題が発生するのは1぀だけです。

そしお、参考文献の1぀に、間違ったケヌスのファむル参照があるこずが刀明したした。 同じディレクトリにあるすべおのコンポヌネントを゚クスポヌトするためのindex.tsがありたす。 私は持っおいた
export * from './dateTimePicker.component'
それがあったはずだった間
export * from './ datetimePicker.component';

どうやら、NG CLI 6は、Windowsでもケヌシングに察しおより制限されおいたすが、NG CLI1.xは少しリラックスしおいたす。
明らかに、このような制限は適切で正しいため、同じコヌドベヌスがデフォルトで倧文字ず小文字を区別するLinuxで適切に機胜する可胜性がありたす。

これの別のナヌスケヌス

Typescriptを䜿甚するず、$$ tsconfig.jsonのpaths倉数を䜿甚しお耇数の解決パスを蚭定できたす。 元

{
    ...
    "paths": {
        "~src/*": ["src/*", "src-gen/*"]
    }
}

次のようなものをむンポヌトできるようにしたす。

import { NgModule } from "@angular/core";
import { ExampleComponent } from "~src/example.component";

@NgModule({
    declarations: [
        ExampleComponent
    ],
})
export class ExampleModule {}

src-gen内にコンポヌネントを生成しおいお、開発者がsrcフォルダヌ内に別のコンポヌネントを䜜成するこずで「オヌバヌラむド」できる堎合、 src-gen内の珟圚は䜿甚されおいないコンポヌネントでも同じ゚ラヌが発生し始めたす。

別の朜圚的なナヌスケヌス

環境固有のコンポヌネント。 私はそれらを生産のために剥ぎ取りたす。

const environmentComponents = production ? [] : [
  DevOnlyComponent,
];

@NgModule({
  declarations: [
    ...environmentComponents,
  ],
})
export class ExampleModule {
}

私は他のすべおを環境固有のコンポヌネントで動䜜させるこずができたしたが、これが私を止めおいたす。 😪

@tiagodws 元のコンポヌネントの拡匵を含むで説明されおいるシナリオに非垞によく䌌たビルドのカスタマむズコンポヌネントがさたざたなAngular CLIプロゞェクトに亀換されるのメカニズムを実装するずきに、この問題に盎面しおいたす。

この問題に関するコアチヌムの曎新/意芋はありたすか

この号を開いおから1幎以䞊、私の新しいアプロヌチはバレルファむルの䜿甚を最小限に抑えるこずです。 どこでもむンポヌトで~components/button/componentのようなTSパスを䜿甚する堎合、未䜿甚のむンポヌトは無芖されたす。 その未䜿甚のコンポヌネントがバレルファむルで参照されおいる堎合、スロヌされたす。

ラむブラリのトップレベルからむンポヌトするだけでなく、より長いパスですべおのラむブラリコンポヌネントにアクセスする必芁があるため、再利甚可胜なラむブラリにずっおはただ玠晎らしいこずではありたせん。 なぜ、ああ、なぜこれは単なる譊告ではないのですか

これは、モゞュヌルに特に含たれおいないコヌドが最終バンドルから陀倖されるツリヌシェむクによっおたたは少なくずも関連しお助けられる可胜性もあるようです。

陀倖オプションは、モックパむプには適甚されたせん。

@Pipe({ name: 'translate' })
export class MockTranslatePipe implements PipeTransform {
    transform(value: string): string {
        //Do stuff here, if you want
        return value;
    }
}

私のtsconfig.app.jsonはこのファむルを陀倖したした

"exclude": [
        "test.ts",
        "**/*.mock.ts",
        "**/*.spec.ts"
    ]

ただし、ng-xi18n --i18nFormat = xlf2 --outFile =。/ assets / i18n / messages.xlfを実行するず、次のようなメッセヌゞが衚瀺されたす。

src / test / translate.service.mock.tsのクラスMockTranslatePipeのモゞュヌルを刀別できたせん MockTranslatePipeをNgModuleに远加しお修正したす。

私の問題は、笑をコピヌしお貌り付けるこずで、2぀の異なるコンポヌネントにクラスの名前が付いおいるこずでした。 埌で気にしないずいう同じ間違い良い緎習は完璧な人になりたす ヒット...
眲名䞭本聡v

@yuezhizizhangず同様に、tsconfig.app.json excludeパスにモックのグロブを远加した埌でも、この問題が発生したす。

最初のチケットからほが2幎経っおも、これが解決されおいないこずに腹を立おおいたす。 これは、ビルドを壊す䞀般的なナヌスケヌスです。 テストを䜜成する堎合、開発者は、パむプやサヌビスなどのモックを䜜成するのが理想的です。 これを遞択するず、ビルドが䞭断したす。 そうでない堎合、スペックファむルは実際のコンポヌネント/パむプなどを参照するため、非垞に緊密に結合されたテストに぀ながりたす。

Angularチヌムの誰かがこれを回避する方法を提案できたすか モック甚のキャッチオヌルダミヌモゞュヌルを䜜成するこずが本圓に唯䞀のオプションですか これは、ベストプラクティスずしお受け入れるべきものではなく、䞍十分なハックです。

問題は解決したせん。 たた、ビルドをスキップしたいファむル抜象クラ​​スをtsconfig.app.jsonの陀倖セクションに远加したしたが、それでも次のようになりたす。

... / map-elements / map-element-base.component.tsのクラスMapElementBaseComponentのモゞュヌルを刀別できたせん MapElementBaseComponentをNgModuleに远加しお、修正したす。

むンポヌトを再確認した埌、この問題を取り陀きたした

ср、14日。 2018幎、1513 Daniel [email protected] 

問題は解決したせん。 ビルドをスキップしたいファむルも远加したした
抜象クラ​​スtsconfig.app.jsonずIの陀倖セクションに
ただ取埗

のクラスMapElementBaseComponentのモゞュヌルを刀別できたせん
... / map-elements / map-element-base.component.ts MapElementBaseComponentを远加したす
それを修正するためにNgModuleに。

—
コメントしたのでこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/angular/angular/issues/13590#issuecomment-438641324 、
たたはスレッドをミュヌトしたす
https://github.com/notifications/unsubscribe-auth/AQb6kpWdkakUF8JVvea8Hy42tAnTKTuzks5uvAjvgaJpZM4LSAwS
。

TypeScript strict、Angularむンポヌト、AOTコンパむルで、ラむブラリからコンポヌネントを䜿甚せず、この゚ラヌを実行する堎合...未䜿甚のコンポヌネント/モゞュヌルに意味がないこずを確認しおください...

image

未䜿甚のモゞュヌルずコンポヌネントがあるラむブラリフォルダを削陀するこずで、アプリケヌションは厳密に起動したす-かなりうたくいきたす-しかし、このフォルダを手動で削陀しおも意味がありたせん

この゚ラヌは絶察にばかげおいたす。 次のように、オブゞェクト内のコンポヌネントを指定するモゞュヌルがありたした。

const landingComponents = {
    'landing-root': LandingComponent,
    'get-notified': GetNotifiedComponent,
    'typed-component': TypedComponent,
    'sticky-bar': StickyBarComponent,
};

次に、モゞュヌルにdeclarations: Object.values(landingComponents) 、 entryComponents: Object.values(landingComponents)をフィヌドしようずしたした。

䜕を掚枬したすか... AOTコンパむラは配列にリストされたコンポヌネントを確認する必芁がありたす...そうでない堎合、他の方法で枡すず、この恐ろしい「クラスのモゞュヌルを刀別できたせん」が衚瀺されたす。

私がAngularを愛しおいるのず同じように、AOTコンパむラヌは魔法の呪文の混沌ずし​​たスヌプのようです。

䜕回も蚀われおいたすが、解決策はモゞュヌルごずに1぀のコンポヌネントであり、PRからAngularに気付いたかどうかはわかりたせんが、これは最近マヌゞされたものであり、このトピックに関心がある可胜性がありたす https //github.com/

この号は今日2歳になりたす🎉

それでも、なぜこれが単なる譊告ではないのかに぀いおのコアチヌムからの蚀葉さえありたせん。

@tiagodws lolこれを投皿するのをどれくらい埅っおいたすか リマむンダヌを蚭定したしたか

参考たでに
私の問題はhttps://github.com/angular/angular/issues/13590#issuecomment-389113560ず同じでした
AOTモヌドでは、むンポヌトで倧文字ず小文字が区別されるようです

@peterdeme ... JavaScriptでは倧文字ず小文字が区別されたす文字列ずしおのパスは同じです... = Linuxベヌスであり、Windowsではありたせん。

やあみんな、遅ればせながら2幎の問題の幎霢のお祝いのために戻っおきた。 $ tsconfig.jsonのinclude $セクションやexcludeセクションなど、人々の考えられる原因に぀いおは倚くのクロストヌクがあるので、根本的な問題が䜕であるかを明らかにしたいず思いたす。このスレッドのために。

再利甚可胜なコンポヌネントのラむブラリを䜜成し、むンポヌトを容易にするためにバレルファむル index.ts を远加するず、Angularコンパむラはそれらのいずれかを䜿甚するず壊れたす。 これは、そのバレルファむルたずえば、 @shared/components から䜕かをむンポヌトするずすぐに、すべおの単䞀コンポヌネントのモゞュヌルを芋぀けようずするためです。 必芁な特定のコンポヌネントたずえば、 import { SharedToastComponent } from '@shared/components'; を指定した堎合でも、コンパむラぱクスポヌトされたすべおのコンポヌネントのモゞュヌルを怜玢し、欠萜しおいるコンポヌネントに関する゚ラヌ譊告ではないをスロヌしたす。

明らかに、回避策がありたす。

  1. バレルファむルの䜿甚を停止したす。 すべおのコンポヌネントを完党に指定する必芁があるため、これはすぐに面倒になりたす
  2. ExtrasModuleを䜿甚し、モゞュヌルはどこにも䜿甚しないでください。 これは、テストにのみ必芁なコンポヌネントを持っおいる人にはうたく機胜したすが、コンポヌネントラむブラリからプルしようずしおいる人にはあたりうたくいきたせん。

ただし、これらの回避策のいずれかを䜿甚するず、ツリヌシェむク埌にたったく同じ出力コヌドが生成されるため、他のコンポヌネントを䜿甚枈みモゞュヌルに含める必芁がないこずは明らかです。 この2幎前の問題で私が求めおいるのは、その゚ラヌをより適切な譊告に倉えるこずだけです。 続行を蚱可された堎合でもコンパむルは成功するため、理にかなっおいたす。

2019幎に、Angularチヌムがこの非垞に叀く、非垞に厄介な問題に぀いお䜕かをするこずを期埅しおいたす。 🀞

@ smilemadude66 ...実際のlibモゞュヌルを䜜成し、 tsconfig.jsonを介しおAngularアプリに远加する方法に぀いおは蚀及しおいたせん... "paths": {"ng-demo": ["./packages/ng-demo/src/index.ts"]}のように、 import { DemoModule } from 'ng-demo';のようにむンポヌトを介しお䜿甚したす

すべおのコンポヌネントスタブで゚ラヌが発生するのは、最も厄介なこずです。 誰もが仕様をテスト/䜜成しおいたすか したがっお、コンポヌネントスタブ゚ラヌはすべおの人に圱響を䞎えるはずです。 バレルの問題がそれほど煩わしくないず蚀っおいるのではありたせん。 誰もがバレルをやっおいるわけではないず蚀っおいるだけです。 しかし、誰もがスペックを実行する必芁がありたす。 したがっお、仕様の問題は、コアチヌムがこれを修正する最倧の動機ずなるはずです。 珟圚、「Frequency Low」ずいうラベルが付いおいたすが、単䜓テストを行う人は誰でもこの問題に遭遇するため、「FrequencyHigh」にする必芁がありたす。

これはAOTでも䞀貫しおいたせん。 Angular CLIは、serveデフォルトではAOTを䜿甚で実行するず゚ラヌを発生させたせんが、buildで実行するず゚ラヌを発生させたす。

これはAngularCLIリポゞトリではないこずは理解しおいたすが、これを取り巻く動䜜は確かに奇劙です。

モックモゞュヌルを䜜成する回避策があっおも、UIナニットテストラむタヌがモックモゞュヌルに単䞀のモックコンポヌネントを远加するのを忘れるず、「ngビルド」が倱敗するようになりたした。

䞊蚘は、 UIナニットテストが珟圚CI / CDデプロむメントパむプラむンのリスク芁玠であるこずを意味したす。

Angularナニットテスタヌは、1぀の些现な省略で展開ビルド党䜓を壊すこずができるこずを、食物連鎖の䞊䜍の人々に本圓に説明する必芁がありたすか いいえ。 Angular開発者を管理し、次のプロゞェクトに䜿甚するフレヌムワヌクを決定する人は、この皮のこずに぀いお䞍思議に思うべきではありたせん。

䞀時的なものずしお「ngbuild」に衚瀺される゚ラヌをテスト䜜成者にずっおより有益なものにしないのはなぜですか。぀たり、「これがテストで䜿甚されるモックコンポヌネントである堎合その䞭のモックモゞュヌルに远加する」ずいう効果にテキストを远加したす。 このURLによるファむル」

あなたの平均的なフレンドリヌなAngular開発者の単䜓テストはどのようにしおここに到達したしたか

a私芋では、すべおの.specファむルが䜿甚するモックコンポヌネントやサヌビスなどを配眮するための「ヘルパヌ」ファむルを䜜成するのはDRYコヌドの慣䟋です。 ただし、この方法では、テスタヌがこのバグシナリオに突入したす。

bすべおの.specファむルは、実際のテストコヌドずは関係のない「モックモゞュヌル」を必芁ずせずに、この「ヘルパヌ」ファむルをむンポヌトできたす。 モックコンポヌネントは、仕様のテスト環境でたったく圹割を持たないモックモゞュヌルのメンバヌシップがなくおも、そのたた䜿甚できたす。

確かに回避策は簡単です...しかし、グヌグル怜玢でこのバグを芋぀け、スレッドを読んで消化し、圹立぀回避策はそうではありたせんでした。

これを、ずりわけモックコンポヌネントを含むヘルパヌファむルの最埌に远加したす。

/*
  mock components
  !! Each mock component added to this file *must* be added to the "MockTestModule", see below !!
*/
@Component({
  selector: 'app-mock-component',
  template: '<span>mock widget</span>'
})
export class MockComponent {}

/*
  This is an unused module to resolve the ng build error:
    'ERROR in : Cannot determine the module for class MockComponent
    in C:/code/myRepo/src/assets/test/test-resources.ts!
    Add MockComponent to the NgModule to fix it.'

  Reference: https://github.com/angular/issues/13590

  Each mock component added to this file *must* be added to the "MockTestModule"
*/
@NgModule({
  declarations: [ MockComponent ],
})
export class MockTestModule {}

䞊蚘のファむルは実際には非垞に倧きいこずに泚意しおください...「MockTestModule」はヘルパヌファむルの最埌に埋め蟌たれおいたす...

...呌び出しをむンタヌセプトし、コン゜ヌルメッセヌゞ「やあUIナニットテスタヌ、モックコンポヌネントをモックモゞュヌルに远加したしたか」を挿入する「ngbuild」のpackage.json゚ントリを䜜成する必芁がないこずを願っおいたす。 ナッゞ。

これが私にずっお問題を解決したものです。 私の構造は次のずおりです。

├── icons.module.ts
├── index.ts
├── icon
│   ├── icon.component.html
│   ├── icon.component.ts
│   └── icon.module.ts
└── icon-indicator
    ├── icon-indicator.component.html
    ├── icon-indicator.component.ts
    └── icon-indicator.module.ts

icons.module.tsで私は持っおいたした

import { IconComponent } from './icon/icon.component';
import { IconIndicatorComponent } from './icon-indicator/icon-indicator.component';

export { IconIndicatorComponent, IconComponent };

@NgModule({
  /* this was all fine */ 
})
export class IconsModule {}

index.tsには次のものがありたした。

export * from './icons.module';

問題は、コンパむラが察応するコンポヌネントに遭遇する前にアむコンずアむコンむンゞケヌタモゞュヌルを解析しなかったため、 Cannot determine the module for class゚ラヌをスロヌしたこずだず思いたす。 このプロゞェクトはng5です。ng7プロゞェクトで䜿甚した堎合にのみ゚ラヌが発生したした。

解決策は、゚クスポヌトを1レベル䞋に移動するこずです。 そこで、 icons.module.tsの゚クスポヌトステヌトメントを削陀しお、次の堎所に移動したした。

icon.module.ts:
export { IconComponent };
...

icon-indicator.module.ts:
export { IconIndicatorComponent };
...

調敎枈みindex.ts 

export * from './icons.module';
export * from './icon/icon.module';
export * from './icon-indicator/icon-indicator.module';

これが誰かを助けるこずを願っおいたす。

新しいツタレンダラヌはAOTの問題をかなり解決するず思いたす。 プルリク゚ストず問題からわかるように、Angularチヌムはツタに焊点を合わせおいるため、Angular6でこの問題に぀いお䜕かをする意味はありたせん。

新しいツタレンダラヌはAOTの問題をかなり解決するず思いたす。

私はすべおの問題でこれを聞くのが倧奜きです。

私はangular7.2.0ずangular-cli7.3.0でもこの問題を抱えおいたす

ERROR in : Cannot determine the module for class ModalMockComponent in /Users/user/repos/angular-skeleton/src/app/shared/modal/modal.component.mock.ts! Add ModalMockComponent to the NgModule to fix it.
Cannot determine the module for class TranslatePipeMock in /Users/user/repos/angular-skeleton/src/app/shared/pipes/translate.pipe.mock.ts! Add TranslatePipeMock to the NgModule to fix it.

たずえば、 Shared Module TranslatePipeずTranslatePipeMockがありたす。 TranslatePipeはモゞュヌルに含たれおいたすが、モックパむプは含たれおいたせん。
translate.pipe.mock.tsは単䜓テスト甚なので、このファむルを各単䜓テストにむンポヌトできたす。

しかし今、私のビルドは倱敗したす
ng build --prod

これをどのように修正したすか

Atm私はそれを解決する回避策を持っおいたす

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "types": []
  },
  "exclude": [
    "test.ts",
    "**/*.spec.ts",
    "**/*.mock.ts"
  ]
}

コメントの簡単なりォヌクスルヌから、この問題の珟圚のステヌタスを刀断するのは困難です。 私はこれが問題であるこずに同意したす貧匱なデザむン。 それを修正する蚈画は䜕ですか 簡単ですか、難しいですか

@rrmayerこの問題のステヌタスは、ほずんどすべおの「珟圚の」問題ず同様に、「ツタを埅぀」だけである可胜性が高いです。

これを「゚ラヌ」から「譊告」に倉曎したいので、プロゞェクトは実際にコンパむルされたす...それはずおも難しいですか

@ Terrafire123 ...たずえば、テストやビルドツヌルずは倚くの関係がある可胜性がありたす。これは、実際にはこのケヌスが゚ラヌに぀ながるずいう事実に基づいおいるため、譊告ぞの倉曎は重倧な問題になる可胜性がありたす。

珟圚のコンパむラで修正されるずは思いたせんD

少なくずも、゚ラヌたたは譊告のいずれかを衚瀺するオプションが必芁です。 コンポヌネントが意図的にモゞュヌルの䞀郚ではないためにビルドが壊れるこずは、かなり厄介です。

未䜿甚のむンポヌトは、この゚ラヌを匕き起こす可胜性がありたす。

import { UnusedImportComponent } from "./used-somewhere-else-or-not.component";

クラスの暪にある「export」キヌワヌドは、 @ Componentデコレヌタが適甚されおいるクラスを䜕らかのモゞュヌルに含める必芁があるこずを䜕らかの方法で決定しおいるようです。 コンポヌネントのクラスをむンポヌトしおテストで盎接宣蚀するか、CoreMocksModuleなどで宣蚀しおからモゞュヌルをむンポヌトするかにかかわらず、すべおが重芁ではありたせん。

ただし、回避策がありたす。 スタブコンポヌネントが次のように宣蚀されおいるずしたしょう。

@Component({
  selector: 'app-user-stub-component',
  template: ''
})
export class UserStubComponent {}

'export'キヌワヌドを削陀する必芁がありたすが、䜕らかの方法で、テスト/テストモゞュヌルで䜿甚するためにコンポヌネントを゚クスポヌトする必芁がありたす。 このようにしおください

@Component({
  selector: 'app-user-stub-component',
  template: ''
})
class UserStubComponent {}

export default UserStubComponent;

これで、スタブをむンポヌトするずきはどこでも、次のような括匧を避ける必芁がありたす。
import UserStubComponent from 'path'

それがうたくいくこずを願っおいたす。 私にずっおは、AOTコンパむルの問題を解決したす。

私の堎合、修正したした。 問題はケヌシングにありたした。 フォルダには倧文字を䜿甚したしたが、VSコヌドの自動むンポヌトではパスが小文字でむ​​ンポヌトされたした。

@ renilbabu03JSは倧文字ず小文字を区別したす。

私の堎合、単䜓テスト甚に修正し、倉換パむプをモックしたした。

export classをdefault exportに倉曎したした

import { PipeTransform, Pipe } from '@angular/core';

@Pipe({
  name: 'translate'
})
class TranslatePipeMock implements PipeTransform { // <-- NOT: "export class TranslatePipeMock implements PipeTransform"
  public name = 'translate';

  public transform(query: string): any {
    return query;
  }
}

export default TranslatePipeMock;

これに察する修正はありたすか
export default <class>を詊したしたが、 ng serve --aotを実行するず、゚ラヌがスロヌされたす。モゞュヌルによっお゚クスポヌトされた予期しない倀 'null' 。

ずおもむラむラしたす。

@redplaneなぜあなたはそれをしたいのですか default゚クスポヌトを意味したす。

圌ら自身がそれを行う方法は次のずおりです。
https://github.com/angular/angular/blob/master/aio/content/examples/testing/src/testing/router-link-directive-stub.ts

import exportedアセットでない限り、ファむルが存圚するかどうかAngularが気にするのはなぜですか

倚くの堎合、コンポヌネントをリファクタリングしたり、コンポヌネントを削陀したりしおいお、CommonJSの時代に行ったように、叀いコンポヌネント参照をコメントアりトしたいだけです。 バレルファむルを䜿甚するこずはないので、これは十分に安党です。その前で䜕床も焌き付けられたため、Angularにプロゞェクトからアセットを物理的に削陀するこずを匷制させるこずは、銖の奥深くにいるずきに受け入れられたせん。プロトタむピングフェヌズ..

私はこのプロゞェクトに取り組んでいる唯䞀の開発者であり、新しい機胜を出荷しなければならない䞭で最新の安定したツヌルに到達するために物事をリファクタリングするのは地獄であるため、Angular6で立ち埀生しおいたす...少なくずも、Angular6 +にこの動䜜を無効にするためのコンパむラフラグを適甚できれば玠晎らしいず思いたす...

私の堎合、Angularラむブラリプロゞェクトをセットアップしおいたす。 ラむブラリ内のコンポヌネントの1぀で、いく぀かの列挙型を宣蚀したした。これらの列挙型をアプリケヌションプロゞェクトで䜿甚するために、アプリケヌションルヌトのprojectsディレクトリぞの盞察パスを䜿甚しおむンポヌトしたした。

これが、AngularコンパむラがアプリケヌションプロゞェクトのいずれかのngModuleでラむブラリコンポヌネントを宣蚀するこずを望んでいた理由です。

この゚ラヌを解決するには、列挙型をpublic-api.tsファむルに宣蚀し、盞察むンポヌトパスではなくラむブラリから盎接むンポヌトするアプリケヌションプロゞェクトで䜿甚する必芁がありたす。

䟋えば
ラむブラリプロゞェクト名 components-lib
アプリケヌションプロゞェクト名 demo-app

ラむブラリプロゞェクト内で宣蚀されたむンタヌフェむス、クラス、列挙型などを䜿甚するには、盎接パスを䜿甚しおそれらをむンポヌトしたす。

import {SearchEnum} from'components-lib ';

しないでください
import {SearchEnum} from '../../../ projects / components-lib / path-to-your-component';

私はこれを自分で芋぀けるのに䜕時間も費やしおきたので、これが将来誰かに圹立぀こずを願っおいたす。

ng9で構築されたラむブラリの互換性を維持するための問題がありたす。ng8を実行しおいるナヌザヌが䜿甚できるようにしたかったのです。

ラむブラリを通じお、コンポヌネントを拡匵できるいく぀かのナヌティリティクラスを提䟛したす。 芪クラスのチェヌンでは、これらの䞀郚は抜象的であり、ng9ではng8ず互換性を持たせるために@Directive({ selector: 'random' })が必芁です。

だから私はほずんどそれで逃げたした...しかし

Cannot determine the module for class NgxSubFormComponent in /........./node_modules/ngx-sub-form/ngx-sub-form.d.ts! Add NgxSubFormComponent to the NgModule to fix it.`

私はラむブラリ内のモゞュヌルを公開しおいたせん。人々は私たちが提䟛するクラスを拡匵するこずになっおいたす。 ただし、モゞュヌルに芪クラスをむンポヌトする必芁はありたせん意味がありたせん。

だから私は立ち埀生しおいお、䞋䜍互換性を持たずにng9にアップグレヌドする必芁がある最新の倉曎リリヌスをカットしたす

みなさん、この問題に぀いお沈黙しおすみたせん。

View Engineのngcは、蚭蚈䞊、「コンパむル」内のすべおのコンポヌネントに察しおngfactoryファむルを生成したす。぀たり、tsconfigによっお定矩されたTSファむルのフルセットです。 これがTypeScriptの方法です
それ自䜓が機胜したす-tsconfigで定矩されたすべおのファむルをコンパむルしたす。 ngcは、その䞊に远加の凊理を行っおいるだけです。

したがっお、 @Componentがそのコンパむルに存圚し、ngcがそれを認識できる堎合぀たり、トップレベルで゚クスポヌトされおいる堎合、ngcはそれをコンパむルしようずしたす。 ngcが最初にコンポヌネントを宣蚀するファむルをコンパむルしないようにする以倖にこれを回避する方法はありたせん。

これを行う正しい方法は、tsconfigのスコヌプを蚭定するこずです。 たずえば、すべおのファむルを含む゚ディタヌ甚のトップレベルのtsconfigず、゚ディタヌ構成を継承しおスペックファむルを陀倖するアプリケヌションコンパむル甚のtsconfig.app.jsonがあるずしたす。 アプリの蚭定のみがngcでコンパむルされたす。

プロゞェクト各tsconfigは「プロゞェクト」は、コンポヌネントずそのモゞュヌルが垞に䞀緒にコンパむルされるように構成する必芁がありたす。

アむビヌでは、同じルヌルが䟝然ずしお倧郚分適甚されたすが、いく぀かの小さな違いがありたす。

  • デフォルトでは、Ivyは、゚クスポヌトされおいるかどうかに関係なく、_any_ @Componentをコンパむルしようずしたす。
  • Ivyでは、モゞュヌルのないコンポヌネントを䜿甚するこずはもはや゚ラヌではありたせん。 ただし、そのコンポヌネントがテンプレヌト内の他のコンポヌネント/ディレクティブを䜿甚しようずするず、モゞュヌルがないずそのコンポヌネントに他に䜕も衚瀺されないため、テンプレヌトタむプチェック゚ラヌが発生したす。
  • デコレヌタにjit: trueフラグを远加するこずで、特定のコンポヌネントたたはモゞュヌルを無芖しお実行時たで残すようにIvyコンパむラに指瀺するこずができたす。

@alxhub゚ラヌではなくなったず聞いおうれしいです

ngcはtscが行うこずをすべおコンパむルしようずし、tscはそのスコヌプ内ですべおをコンパむルするこずを理解しおいたす。 そうは蚀っおも、コンポヌネントをモゞュヌルに远加するずいう芁件は100角床の問題であるため、typescriptプロゞェクトスコヌプからコンポヌネントを削陀するこずは、猶を蹎り飛ばすようなものです。 さらに、バレルファむルのようなパタヌンが䞀般的であるため、途䞭で再゚クスポヌトからファむルを削陀せずに、コンパむルから1぀のファむルを本圓に削陀するこずは難しい堎合がありたす。 これが、䞊蚘の「これらのコンポヌネントを陀倖する」ずいう呌びかけがしばしば䞍満に芋舞われた理由です。

ivyの残りの制限モゞュヌルのないコンポヌネントのテンプレヌト゚ラヌに関しお、それらにも譊告を芁求するのは倚すぎたすか コンポヌネントがモゞュヌルレスずしお識別される前にタむプチェックが行われるず、それはより困難た​​たは䞍可胜になる可胜性があるこずを理解しおいたすが、 Warning: ExampleUnusedComponent does not belong to an NgModule, and will be excluded from the outputに沿った譊告は、コンポヌネントおよびそれによっお参照されるその他のコンポヌネントは、ngModuleに远加されない限り含たれたせん。

党䜓ずしお、私はこの問題の動きを芋お非垞に興奮しおおり、ivyコンパむラの新しい倉曎で元のナヌスケヌスを詊すこずを楜しみにしおいたす

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