2015-12-21 28 views
5

Nói rằng tôi có một foo.ts và app.ts như sau:sử dụng systemjs trên Node.js (& góc 2)

foo.ts:

export interface Foo { 
    id: number; 
    label: string; 
}; 

app.ts:

import {Foo} from './foo' 
var myfoo: Foo = { "id": 1, "label": "One" }; 
console.log(JSON.stringify(myfoo)); 

Sau khi biên dịch, thực hiện 'node app.js' từ dòng lệnh chạy như mong đợi nếu tôi sử dụng "module"="commonjs" trong tsconfig.json của tôi. Cắt theo đuổi, điều tôi muốn làm là sử dụng giao diện phía máy khách Foo với Angular 2 và phía máy chủ có nút. Vô tình, sự khởi đầu nhanh chóng 2 Tôi đang làm người mẫu trên here muốn "module"="system" trong tsconfig.json. Cấu hình này gây ra một lỗi khi cố gắng chạy 'node app.js':

System.register([], function(exports_1) { 
^ 
ReferenceError: System is not defined` 

Tôi đã thử làm theo các hướng dẫn sử dụng systemjs với nút trên github, nhưng vào thời điểm này tôi chỉ nghiền phím và có thể sử dụng một số giúp đỡ. Làm thế nào để (a) lấy mã app.ts của tôi chạy trên phía máy chủ bằng cách sử dụng systemjs, hoặc luân phiên, (b) có được Quickstart Angular 2 chạy với commonjs?

+0

Bạn có chắc chắn bao gồm "system.js" trong html của mình không? Kiểm tra các công cụ dev của bạn để chắc chắn rằng tất cả các tệp javascript được tải. –

+0

Đây là node.js ở phía máy chủ, chạy từ dòng lệnh. Client chạy tốt với system.js và hướng dẫn quickstart Angular 2. Ngoại trừ thay vì sử dụng lite-server như trong hướng dẫn, tôi đang sử dụng Node (+ Express) để phục vụ các trang (+ dịch vụ web). Nhưng tôi không thể có được "hệ thống" để làm việc trên mã phân loại máy chủ muốn chia sẻ giao diện Foo. Những gì tôi đang tìm kiếm là một ví dụ nút phía máy chủ kiểu chữ đơn giản sử dụng "hệ thống" thay vì "commonjs". – Ken

+0

Để rõ ràng, mọi thứ hoạt động tốt nếu tôi viết phía máy chủ trong ES5 và javascript truyền thống. Nhưng tôi đang đánh một bức tường cố gắng chia sẻ mã lệnh trên cả máy khách và máy chủ, với tsc -p. trên toàn bộ dự án khách hàng & máy chủ. – Ken

Trả lời

2

Tôi sẽ kết thúc câu trả lời này, ngay cả khi câu hỏi chưa được bỏ phiếu. Các giải pháp dường như được sử dụng Gulp để biên dịch mã phân loại phổ biến (như giao diện Foo) khác nhau cho khách hàng ("module" = "hệ thống") và máy chủ ("module" = "commonjs"). Nếu có một cách để biên dịch mã phân loại trong OP với "module" = "system" tôi vẫn muốn biết. Nhưng nó có vẻ là loại học thuật vì mọi người đều quản lý dự án của họ với Gulp hoặc một cái gì đó tương tự.

+0

Tôi sử dụng cùng một cách tiếp cận hiện tại. Nhưng nhược điểm là, các biên tập viên như visual studio đánh dấu hàng chục lỗi với cách tiếp cận này. –

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