Saya mencoba untuk menguji pemecah rute saya dan saat pengujian saya dapatkan TypeError: ctor is not a constructor
dan tidak tahu mengapa itu terjadi sementara waktu kompilasi skrip tidak ada kesalahan.
TypeError: ctor is not a constructor
TypeError: ctor is not a constructor
at _createClass (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42355:26)
at _createProviderInstance$1 (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42330:26)
at resolveNgModuleDep (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42315:17)
at _createClass (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42362:26)
at _createProviderInstance$1 (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42330:26)
at resolveNgModuleDep (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42315:17)
at NgModuleRef_.webpackJsonp../node_modules/@angular/core/@angular/core.es5.js.NgModuleRef_.get (http://localhost:9877/_karma_webpack_/vendor.bundle.js:43401:16)
at TestBed.webpackJsonp../node_modules/@angular/core/@angular/core/testing.es5.js.TestBed.get (http://localhost:9877/_karma_webpack_/vendor.bundle.js:48412:47)
at http://localhost:9877/_karma_webpack_/vendor.bundle.js:48418:61
at Array.map (native)
angular
karma-runner
angular-routing
Aniruddha Das
sumber
sumber
Jawaban:
Ini bisa menjadi kesalahan dalam deklarasi penyedia.
Ketika Anda mencoba untuk mengejek penyedia dan menggunakan useClass daripada useValue, kesalahan "TypeError: ctor bukan konstruktor" dipicu.
Berikut adalah contoh yang mengaktifkan kesalahan:
Pernyataan yang benar adalah:
sumber
{ provide: httpTestingControllerToken, useClass: HttpTestingController },
, di mana saya menyatakanconst httpTestingControllerToken = new InjectionToken<HttpTestingController>('httpTestingControllerToken');
... ini adalah saat mencoba mengganti yang usangTestBed.get
. Ada ide?Saya mendapat pesan yang sama persis saat membangun aplikasi saya dengan AOT.
Masalah saya tidak terkait dengan penyedia seperti yang disarankan @abahet.
Itu karena saya menyiapkan perpustakaan baru yang tidak sesuai dengan AOT (dan juga tidak memiliki penyedia). Pustaka yang dimaksud harus mengekspor (saya berbicara tentang ekspor Typecript, bukan yang dari modul Angular) apa yang diimpor dalam modul (dalam hal ini, komponen dan pipa).
sumber
Saya mengalami masalah ini dengan Angular Universal yang dikombinasikan dengan Firebase dalam proyek Firebase Universal Starter. Saya hampir kehilangan harapan karena semua potensi perbaikan pada stack overflow tidak membantu. Jadi saya melakukan yang berikut:
Saya tidak pernah menemukan paket apa yang menyebabkan kesalahan, tetapi satu pendekatan untuk mengetahuinya adalah dengan membuat MockAppModule tempat Anda menghapus modul satu per satu. Akhirnya Anda akan menemukan orang yang bermasalah. Tetapi dalam kasus saya, saya beruntung, saya kira karena salah satu paket yang disadap diperbarui atau sesuatu.
sumber
Kemungkinan ketiga bagi Anda, saya memiliki modul yang berisi modul lain dan tidak mengekspor (berbicara ketikan) modul lainnya.
sumber
Saya juga mengalami masalah ini dengan AOT diaktifkan. Saya menambahkan file layanan baru. Saya memulai ulang kompiler dan masalah teratasi.
sumber