2015-12-21 66 views
5

說我有一個foo.ts和app.ts如下:使用systemjs上的node.js(角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)); 

編譯之後,如果我在我的tsconfig.json中使用"module"="commonjs",那麼從命令行執行'node app.js'將按預期運行。切入追逐,我想要做的是使用我的Foo接口客戶端與Angular 2,服務器端與節點。不方便的是,我在here上建模的Angular 2 quickstart想要在tsconfig.json。此配置使試圖運行'node app.js'時出現錯誤:

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

我曾嘗試以下關於github使用systemjs與節點的指令,但是在這一點上,我只是糖化鍵可以使用一些幫助。我如何(a)讓我的app.ts代碼使用systemjs在服務器端運行,或者(b)使用commonjs運行Angular 2快速入門?

+0

你確定你在你的html中包含「system.js」嗎?檢查你的開發工具以確保所有的JavaScript文件都被加載。 –

+0

這是服務器端的node.js,從命令行運行。客戶端運行良好與system.js和Angular 2快速入門教程。除了像本教程中那樣使用lite-server之外,我使用Node(+ Express)來提供頁面(+ Web服務)。但是我不能讓「系統」在想要共享接口Foo的服務器打字稿代碼上工作。我正在尋找的是一個簡單的typecript服務器端節點示例,它使用「system」而不是「commonjs」。 – Ken

+0

要清楚的是,如果我在ES5和傳統的JavaScript中編寫服務器端,一切正常。但是我打了一面牆,試圖在客戶端和服務器上共享打印腳本代碼,使用tsc -p。在整個客戶端和服務器項目上。 – Ken

回答

2

即使這個問題還沒有被提高,我打算用一個答案來包裝這個問題。該解決方案似乎是使用Gulp以不同方式爲客戶端(「module」=「system」)和服務器(「module」=「commonjs」)編譯通用打字稿代碼(如界面Foo)。如果有一種方法可以在OP中使用「module」=「system」來編譯打印腳本代碼,我仍然想知道。但它似乎是一種學術,因爲每個人都用Gulp或類似的東西來管理他們的項目。

+0

我目前使用相同的方法。但不足之處在於,像Visual Studio這樣的編輯者用這種方法標記了幾十個錯誤。 –