কৌণিক 4 ইউনিট পরীক্ষার ত্রুটি `TypeError: ctor কোনও নির্মাণকারী নয়`


90

আমি আমার রুট রিসলভারটি পরীক্ষা করার চেষ্টা করছি এবং পরীক্ষার সময় আমি পেয়েছি TypeError: ctor is not a constructorএবং কেন টাইপস্ক্রিপ্ট সংকলন করার সময় কোনও ত্রুটি নেই তা কেন হয় তা জানিনা ।

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)

আপনি NG2 বুটস্ট্র্যাপ ব্যবহার করছেন
Sibiraj

হ্যাঁ. তবে আমি রুট রিসলভার পরীক্ষা করছি। এইচটিএমএল বা সিএসএস নেই এমন কি আমার রুট রিসলভারটি প্রভাবিত করছে
অনিরুদ্ধ দাস

উত্তর:


270

সরবরাহকারীদের ঘোষণায় এটি একটি ত্রুটি হতে পারে।

আপনি যখন কোনও সরবরাহকারীকে উপহাস করার চেষ্টা করেন এবং ব্যবহারের পরিবর্তে ব্যবহারের ক্লাস ব্যবহার করেন তখন ত্রুটিটি "TypeError: ctor নির্মাণকারী নয়" বরখাস্ত করা হয়।

এখানে একটি উদাহরণ যা ত্রুটিটিকে আগুন ধরিয়ে দেয়:

providers: [{provide: OrderService, useClass: new OrderServiceMock()}]

সঠিক ঘোষণাটি হ'ল:

providers: [{provide: OrderService, useValue: new OrderServiceMock()}]

4
আপনি আমার দিনটি রক্ষা করেছেন
রশ্মি কুমারী

4
ওহ আপনাকে ধন্যবাদ, আমি এটি দেখার আগে অনেক আগে এই দিকে তাকিয়ে থাকতাম।
মাইকেল গুথ্রি

4
ভাল, তুমি কি জানো. আমি প্রথমবার এই ভুলটি করি নি। ইতিমধ্যে উত্তর upvated আছে!
Kildareflare

করার সময় আমি এই ত্রুটিটি পাচ্ছি { provide: httpTestingControllerToken, useClass: HttpTestingController },, যেখানে আমি ঘোষণা করেছি const httpTestingControllerToken = new InjectionToken<HttpTestingController>('httpTestingControllerToken');... হতাশাকে প্রতিস্থাপনের চেষ্টা করার সময় এটিই TestBed.get। কোন ধারনা?
লেলসেল্ডেও

2

আমার অ্যাপটি এওটি দিয়ে তৈরি করার সময় আমার কাছে ঠিক একই বার্তা ছিল।

আমার সমস্যা সরবরাহকারীর সাথে সম্পর্কিত ছিল না যেমন @ বাবেত প্রস্তাবিত হয়েছিল।

এটি কারণ ছিল যে আমি একটি নতুন লাইব্রেরি সেটআপ করেছি যা AOT এর সাথে সামঞ্জস্যপূর্ণ ছিল না (এবং এর কোনও সরবরাহকারীরও নেই)। প্রশ্নযুক্ত গ্রন্থাগারটি রফতানি করতে হয়েছিল (আমি টাইপস্ক্রিপ্ট রফতানির কথা বলছি, কৌণিক মডিউলটি নয়) মডিউলে কী আমদানি করা হয়েছিল (এই ক্ষেত্রে, একটি উপাদান এবং একটি পাইপ)।


2

ফায়ারবেস ইউনিভার্সাল স্টার্টার প্রকল্পে ফায়ারব্যাসের সাথে সম্মিলনে অ্যাংুলার ইউনিভার্সাল নিয়ে আমার এই সমস্যা ছিল। স্ট্যাক ওভারফ্লোতে সমস্ত সম্ভাব্য সংশোধনগুলি সাহায্য করতে পারেনি বলে আমি প্রায় আশা হারিয়ে ফেলেছিলাম। সুতরাং আমি নিম্নলিখিতটি করেছেন:

  1. Https://www.npmjs.com/package/npm-check-updates সহ সমস্ত এনপিএম প্যাকেজ আপডেট করুন
  2. নোড_মডিউলগুলি এবং .প্যাকেজ-লক.জসন সরান এবং সেগুলি পুনরায় ইনস্টল করুন
  3. পরিবর্তিত এপিআইয়ের কারণে সমস্ত ত্রুটি স্থির করে
  4. এখন এটি কাজ করছিল :-)

কোন প্যাকেজটি ত্রুটি সৃষ্টি করেছিল তা আমি কখনই খুঁজে পাইনি, তবে এটির সন্ধান করার জন্য একটি পদ্ধতি হ'ল এমন একটি মকঅ্যাপমডিউল তৈরি করা যেখানে আপনি একে একে মডিউলগুলি সরিয়ে ফেলুন। অবশেষে আপনি সমস্যাটি খুঁজে পাবেন। তবে আমার ক্ষেত্রে আমি ভাগ্যবান হয়েছি বলে মনে করি বাগড প্যাকেজগুলির মধ্যে একটি আপডেট হয়েছে বা কিছু হয়ে গেছে।


1

আপনার পক্ষে তৃতীয় সম্ভাবনা, আমার কাছে অন্যান্য মডিউল যুক্ত একটি মডিউল ছিল এবং আমি অন্যান্য মডিউলগুলি রফতানি করিনি (টাইপস্ক্রিপ্ট))


1

আমারও এওটি সক্ষম করার সাথে এই সমস্যা হয়েছিল I আমি একটি নতুন পরিষেবা ফাইল যুক্ত করেছি। আমি সংকলকটি আবার চালু করেছি এবং সমস্যাটি সমাধান হয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.