2015-01-06 4 views
3

Только что начал прогреваться с помощью Node.js + Eclipse + TypeScript и уже несколько дней стучал головой. Вот код моего Server.ts файла, который я использовал с Node.js сайта (только что добавленном эталонного тракта в верхней части):Как правильно настроить Node.js + Eclipse + TypeScript?

/// <reference path="node.d.ts" /> 

var http = require('http'); 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(1337, '127.0.0.1'); 

console.log('Server running at http://127.0.0.1:1337/'); 

Проблема заключается в том, если я не использую ссылочный путь в нижней части и используйте файл node.d.ts, затем он показывает «Невозможно найти имя», где я включаю http-модуль. Но если я использую node.d.ts и ссылаться на него, то он показывает кучу ошибок внутри node.d.ts():

import events = require("events"); // shows no such file or directory events.ts 
import net = require("net"); // shows no such file or directory net.ts 

Действительно там нет таких файлов, и даже они они должны быть JS файлы не ts (imho). Во всяком случае, выполнение «tsc -v» показывает мне, что я использую версию TypeScript 1.3. После googling я нашел и использовал это node.d.ts file for my TypeScript 1.3. Однако похоже, что это неправильный файл, или я пропустил какой-то момент.

Я все еще много смущен об этих файлах * .d.ts. Мой проект eclipse создал ссылку на некоторые lib.d.ts, но это не помогает, если я пытаюсь ссылаться на него вместо файла manual.d.ts вручную. Почему мы нуждаемся в них для даже фундаментальных команд, таких как require? И, конечно же, любая помощь будет оценена :)

Update Вот скриншот о node.d.ts жалуется:

enter image description here

Update2 Наконец, я понял :) Оказывается, машинопись сам ничего не знает о специальных javascript-вещах, которые присутствуют на Node.js (эти функции отсутствуют в обычном браузере javascript). Вот почему компиляторы TypeScript жалуются на требования, которые являются специфичными для Node.js. Поэтому нам нужно некоторое определение моста для компилятора TypeScript о конкретных вещах Node.js. Поэтому нам нужно включить node.d.ts. То же самое нам нужно сделать для других фреймворков javascript или libs, чтобы иметь возможность использовать их в TypeScript. Остается вопрос, почему Eclipse жалуется на мой файл node.d.ts ...

Update3. Я установил плагин Enide Studio 2014 для узла, который включает в себя плагин Typecs на компьютере моей работы (Maverics). Вот мой список установленных плагинов для Eclipse:

enter image description here

Теперь я не заметил, что нет плагина Enide, и я помню его установка заняла довольно долго вчера, поэтому благодаря @SteveFenton месте, это может быть проблемой. Сегодня начали устанавливать Enide плагин снова и вот снимок экрана процесса установки:

enter image description here

Та же установка была успешной на той же версии Eclipse (Luna) на моем Йосемити макинтош дома.

+1

Можете ли вы сказать нам, что сообщения об ошибках для этих трех линий? Если вы добавите следующий пример в файл TypeScript в своем проекте, вы получите похожие ошибки? http://bit.ly/1BGST0c – Fenton

+0

@SteveFenton У меня есть обновленный образ экрана для печати в вопросе. Он показывает, что невозможно прочитать файл events.ts. Интересно отметить, что я загрузил и использовал другой файл node.d.ts вчера (не помню, откуда), и он работает. Однако для таких парней, как я, которые не очень сильны с javascript/typescript, было бы хорошо знать, как мы можем проверить, используется ли неправильный node.d.ts. Поэтому я предполагаю, что остальная часть кода является правильной. – Centurion

+0

@SteveFenton Извините. Пробовал ваш пример, и он также дает мне аналогичную ошибку в отношении такого файла или каталога example-one.ts – Centurion

ответ

2

Вы должны быть в состоянии использовать import, а не var:

/// <reference path="node.d.ts" /> 

//var http = require('http'); 
import http = require('http'); 

Это будет работать, даже если http не является файлом. Таким образом, все в node.d.ts. Если вы используете другие элементы узла, например express, вам понадобятся дополнительные файлы .d.ts.

+0

Даже если я перейду на import, компилятор все еще жалуется на отсутствие файлов (events.ts, net.ts) в node.d.ts. Может, что-то еще не так? Смотрите скриншот в обновленном ответе. – Centurion

2

Благодаря @SteveFenton, я смог определить свою собственную глупую ошибку. Просто я не работал с Eclipse, и из-за этого я не сообщил, что Enida для плагина узла не был полностью установлен. Вот скриншот, который у меня есть. Все еще нужно исследовать, почему он не установлен правильно.

enter image description here

Вот ошибки:

enter image description here

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