2016-05-27 28 views
13

Tôi làm theo các angular2 quick start để tạo ra dự án của tôi và tất cả mọi thứ hoạt động tốt nhưng tôi "tsc -w" dòng lệnh vẫn tiếp tục nói với tôi:angular2: Không thể tìm thấy mô-đun '@ góc/lõi'

app/components/company/company.ts(1,36): error TS2307: Cannot find module '@angular/core'. 
app/components/company/company.ts(5,22): error TS2307: Cannot find module '@angular/router'. 
app/components/mission/mission.ts(1,36): error TS2307: Cannot find module '@angular/core'. 
app/components/mission/mission.ts(3,22): error TS2307: Cannot find module '@angular/router'. 

Và có là rất nhiều dòng khác như thế này. Tuy nhiên, mọi thứ được biên dịch thành công và ứng dụng của tôi hoạt động tốt, nhưng nó khá khó chịu khi có tất cả các cảnh báo/lỗi này dưới dạng lỗi thực sự bị mất ở giữa chúng.

Tôi đang sử dụng Angular2 rc1, TypeScript 1.8.10, WebStorm EAP (tôi không sử dụng hệ thống biên dịch WebStorm TypeScript, tôi đang dựa vào một thiết bị đầu cuối mở có dòng lệnh "tsc -w").

Tôi đã kiểm tra các câu hỏi khác liên quan đến điều đó trên SO, nhưng tôi không tìm thấy bất kỳ điều gì thực sự đã giúp tôi.

Cập nhật

Đây là tập tin tsconfig.json tôi:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "sourceMap": true, 
    "experimentalDecorators": true, 
    "emitDecoratorMetadata": true, 
    "module": "system", 
    "noImplicitAny": false, 
    "outDir": "js", 
    "rootDir": "app" 
    }, 
    "exclude": [ 
    "node_modules", 
    "typings/main", 
    "typings/main.d.ts" 
    ] 
} 
+0

Vâng ... Rõ ràng, tệp này đã được thay đổi trong khởi đầu nhanh chóng kể từ khi tôi tạo dự án của mình. Trong kiểu chữ của tôi, tôi chỉ có "es6-shim", "nhài" và "nút". Tuy nhiên, tôi thấy rằng bây giờ, trong sự khởi đầu nhanh chóng, "es6-shim" được thay thế bằng "core-js", nhưng tôi có cảm giác rằng nó sẽ không giải quyết được vấn đề của tôi (tôi có sai không?). Hơn nữa, giải pháp được đề xuất bởi "Thierry Templier" hoạt động. Cảm ơn – ssougnez

Trả lời

16

Bạn nên sử dụng moduleResolution thuộc tính để node:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "sourceMap": true, 
    "experimentalDecorators": true, 
    "emitDecoratorMetadata": true, 
    "module": "system", 
    "moduleResolution": "node", // <----- 
    "noImplicitAny": false, 
    "outDir": "js", 
    "rootDir": "app" 
    }, 
    "exclude": [ 
    "node_modules", 
    "typings/main", 
    "typings/main.d.ts" 
    ] 
} 
+0

Có vẻ như cách thực sự tốt hơn. Bạn có thể giải thích cho tôi trong hai từ những gì nó thay đổi? – ssougnez

+1

Đó là cách trình biên dịch sẽ tìm ra các tập tin 'd.ts' cho các hợp đồng thư viện. Xem câu hỏi này: http://stackoverflow.com/questions/37413533/what-is-the-purpose-of-tsconfig-json/37413595#37413595. –

+9

Bằng cách nào đó trình soạn thảo của tôi vẫn có 'Không thể tìm thấy mô-đun '@ angular/core'', mặc dù điều này nằm trong' src/'tsconfig? – PascalVKooten

4

Trước tiên bạn cần thêm typings tại toàn cầu mức như sau.

npm install -g typings 

Sau đó tạo typings.json bằng lệnh dưới đây.

typings init 

Dán dưới mã trong typings.json

{ 
    "name": "ng2-application", 
    "globalDependencies": { 
    "core-js": "registry:dt/core-js#0.0.0+20160725163759", 
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 
    "node": "registry:dt/node#6.0.0+20160909174046" 
    } 
} 

Bây giờ bạn cần phải thêm bên dưới mã trong tsconfig.json

"compilerOptions": { 
     "moduleResolution": "node" 
     } 

Sau khi thực hiện các bước bạn sẽ có thể nhận được định nghĩa trên trên F12.

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