2015-12-21 3 views
5

что у меня есть foo.ts и app.ts следующим образом:использованием systemjs на node.js (& Angular 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)); 

После компиляции выполнение 'node app.js' из командной строки выполняется, как ожидается, если я использую "module"="commonjs" в своем tsconfig.json. Вырезание на погоню, то, что я хотел бы сделать, это использовать мой интерфейс Foo на стороне клиента с угловым 2 и на стороне сервера с узлом. Неудобно, Angular 2 quickstart, который я моделирую на here, хочет "module"="system" в tsconfig.json. Эта конфигурация приводит к ошибке при попытке запустить 'node app.js':

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

Я пытался следуя инструкции по использованию systemjs с узлом на github, но в данный момент я просто затирание ключи и может использовать некоторую помощь. Как мне (а) получить мой код app.ts, запущенный на стороне сервера, используя systemjs или поочередно, (b) получить ускоренную скорость Angular 2 с помощью commonjs?

+0

Вы уверены, что включили «system.js» в свой html? Проверьте свои инструменты, чтобы убедиться, что загружены все файлы javascript. –

+0

Это node.js на стороне сервера, запустите из командной строки. Клиент отлично работает с system.js и урок Angular 2 quickstart. Кроме использования Lite-сервера, как в учебнике, я использую Node (+ Express) для обслуживания страниц (+ веб-сервисы). Но я не могу заставить «систему» ​​работать над кодом машинописного сервера, который хочет обмениваться интерфейсом Foo. То, что я ищу, представляет собой простой пример узла на стороне сервера, который использует «систему» ​​вместо «commonjs». – Ken

+0

Чтобы быть ясным, все работает отлично, если я пишу серверную часть в ES5 и традиционном javascript. Но я нажимаю на стену, пытаясь поделиться машинописным кодом как на клиенте, так и на сервере, с tsc -p. на весь клиент и серверный проект. – Ken

ответ

2

Я собираюсь обернуть это ответом, даже если вопрос не был проголосован. Решение состоит в том, чтобы использовать Gulp для компиляции обычного кода машинописного текста (например, интерфейса Foo) по-разному для клиента («module» = «system») и сервера («module» = «commonjs»). Если есть способ скомпилировать код типа в OP с «module» = «system», я все равно хотел бы знать. Но, похоже, это своего рода академический, поскольку каждый управляет их проектом с помощью Gulp или что-то подобное в любом случае.

+0

Я использую тот же подход в настоящее время. Но недостатком является то, что такие редакторы, как визуальная студия, отмечают десятки ошибок при таком подходе. –

Смежные вопросы