2016-03-03 16 views
6

Vì vậy, hầu hết các ví dụ tôi tìm thấy khi nhập các gói jspm vào kiểu dữ liệu giả định rằng tôi muốn sử dụng Systemjs để tải và diễn giải chúng trong trình duyệt. Tuy nhiên, tôi muốn sử dụng tsc để xây dựng các mô-đun commonjs và chỉ nhập mã js, vì dường như tôi là phương pháp tiếp cận chung và chống lỗi hơn với tôi.kiểu chữ: nhập khẩu các thư viện jspm

Vì vậy, cấu trúc thư mục của tôi trông như thế này:

src/index.ts 
jspm_packages/... 
config.js 
tsconfig.json 

Với tsconfig có nội dung sau:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "noEmitOnError": true, 
    "noImplicitAny": false, 
    "rootDir": "src", 
    "outDir": "target/app", 
    "sourceMap": true, 
    "experimentalDecorators": true, 
    "emitDecoratorMetadata": true, 
    "declaration": true 
    }, 
    "exclude": [ 
    "jspm_packages", 
    "node_modules", 
    "typings", 
    "target" 
    ] 
} 

Đối với mục đích thử nghiệm, tôi đã cài đặt góc 2 với jspm install npm:angular2 và cố gắng nhập khẩu nó trong tôi index.ts via import { bootstrap } from 'angular2/platform/browser';

Khi chạy tsc, tôi gặp lỗi

src/index.ts(1,27): error TS2307: Cannot find module 'angular2/platform/browser'. 

Bây giờ tôi tự hỏi, tôi có thể tạo các gói jspm được biết đến với bản ghi không? Tôi cảm thấy như tôi đã thử tất cả, loại bỏ các jspm_packages từ danh sách loại trừ tsconfig, chuyển sang độ phân giải mô-đun nút hoặc tạo mô-đun systemjs. Có lẽ tôi đã không tìm thấy sự kết hợp đúng. Bất kỳ gợi ý nào về những gì cần thử tiếp theo?

+0

Dòng đầu tiên từ trang jspm là "_jspm là một người quản lý gói cho SystemJS mô-đun phổ biến nạp, được xây dựng trên đầu trang của ES6 động mô-đun loader_". Tôi không nghĩ rằng bằng cách sử dụng jspm mà không có system.js là cách tiếp cận đúng ở đây. –

Trả lời

2

Tôi cũng đang phải vật lộn với cùng một vấn đề này và sau một số nghiên cứu, tôi đã học được rằng không có giải pháp tốt để cho phép điều này.

Cách giải quyết:

A) Bạn có thể sao chép các phụ thuộc của mình và cài đặt nó với npm. tsc không nên ném bất kỳ lỗi nào kể từ khi giải quyết từ npm.

B) Thay đổi tsconfig.json và góc bản đồ của bạn thành đường dẫn jspm. Ví dụ:

"baseUrl": ".", 
"paths": { 
    "angular2/*": [ 
     "jspm_packages/npm/[email protected]/*" 
    ], 
    "rxjs/*": [ 
     "jspm_packages/npm/[email protected]/*" 
    ] 
    } 

Xem https://github.com/frankwallis/plugin-typescript/tree/master/examples/angular2 để có ví dụ đầy đủ.

Lưu ý rằng "baseUrl" và "đường dẫn" không phải là thuộc tính chính thức và chỉ trên phiên bản beta của trình biên dịch bản ghi.

Vấn đề này hiện đang được theo dõi ở đây: https://github.com/Microsoft/TypeScript/issues/6012

+0

Tôi thấy điều này quá khó, cũng như intellij không nhận ra tùy chọn đường dẫn. Tôi làm theo cách khác xung quanh và trỏ jspm đến node_modules – rweng

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