2017-06-16 15 views
18

Tôi đang cố gắng kiểm tra trình phân giải tuyến đường của mình và trong khi thử nghiệm, tôi nhận được TypeError: ctor is not a constructor và không biết tại sao nó xảy ra trong khi thời gian biên dịch không có lỗi.lỗi thử nghiệm đơn vị 4 góc 'TypeError: ctor không phải là hàm tạo `

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) 
+0

bạn đang sử dụng ng2 bootstrap –

+0

có. nhưng tôi đang thử nghiệm trình phân giải tuyến đường. đó có ảnh hưởng đến trình phân giải tuyến đường của tôi ngay cả khi không có html hoặc css –

Trả lời

46

Đây có thể là lỗi trong khai báo của nhà cung cấp.

Khi bạn cố gắng giả lập một nhà cung cấp và sử dụng useClass thay vì useValue lỗi "TypeError: ctor không phải là một hàm tạo" được kích hoạt.

Dưới đây là một ví dụ mà bắn các lỗi:

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

Việc kê khai chính xác là:

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

Bạn đã lưu ngày của tôi –

2

tôi đã có thông báo chính xác tương tự khi xây dựng ứng dụng của tôi với AOT.

Sự cố của tôi không liên quan đến nhà cung cấp như @abahet được đề xuất.

Đó là vì tôi thiết lập một thư viện mới không tuân thủ AOT (và cũng không có bất kỳ nhà cung cấp nào). Thư viện được đề cập đến phải xuất hiện xuất (Tôi đang nói về xuất bản Loại, không phải từ mô-đun Góc) được nhập trong mô-đun (trong trường hợp này là thành phần và đường ống).

1

Khả năng thứ ba cho bạn, tôi đã có một mô-đun có chứa các mô-đun khác và không xuất (các phiên bản Typecript) các mô-đun khác.

0

Tôi gặp sự cố này với Angular Universal kết hợp với Firebase trong dự án Khởi động chung cho Firebase. Tôi đã gần như bị mất hy vọng như tất cả các bản sửa lỗi tiềm năng trên stack tràn không giúp đỡ. Vì vậy, tôi đã làm như sau:

  1. Cập nhật tất cả các gói NPM với https://www.npmjs.com/package/npm-check-updates
  2. Di node_modules và .package-lock.json và cài đặt lại chúng
  3. Cố định tất cả các lỗi do thay đổi api của
  4. Bây giờ nó đang làm việc :-)

Tôi chưa bao giờ phát hiện ra gói nào gây ra lỗi, nhưng cách tiếp cận để tìm hiểu là tạo MockAppModule nơi bạn xóa từng mô-đun. Cuối cùng bạn sẽ tìm thấy một với vấn đề. Nhưng trong trường hợp của tôi tôi đã may mắn, tôi đoán do một trong những gói bị lỗi đã được cập nhật hoặc một cái gì đó.

Các vấn đề liên quan