Как настроить адекватный транспайлинг в ES6 (для Node.js) из TypeScript?
Всем привет! У меня тут печалька - полтора дня вожусь с настройкой транспайлинга из typescript в JS(ES6) для Node.js 0.12 (с 4 версией оракловый драйвер пока не работает)
Ноду запускаю с флагом --harmony, что даёт мне частичную поддержку es6, в частности генераторы нужны.
Однако, такие штуки как "import .. from .. / export" нода ещё пока не умеет, считает это за нецензурную брань. А именно в таком виде из TS выдавливается импорт-экспорт модулей в JS! И никак я на это не могу повлиять.
В 4.2.1 версии ноды, кстати, такая же проблема.
Что касается TypeScript, то я его пробовал настроить по-разному. Само собой, --target ES6, флаг --module недопустим в режиме "ES6", а moduleResolution пробовал и "classic", и "node". Последний параметр не очень понимаю, для чего, но попробовал на всякий случай.
И вот как так выходит, что TypeScript транспайлит в нодовский JS то, что нода не умеет интерпретировать? И вообще возможно ли сделать так, чтобы я мог пользоваться полноценным синтаксисом и возможностями TS, получая при этом валидный js-код, который подходит для ноды?
Ну как бы в режиме ES6 остальные модули не нужны, поэтому --module не работает, что логично. Считать, что для 0.12 годится ES6-код -- просто глупо (там этой поддержки с гулькин хрен), в свое время появился io.js именно по этой причине.
Компильте в ES5. 0.12 не поддерживает ES6, точка. Или используйте ts-node.
Привет, Костя! :) Мир тесен.
Ну, допустим, я бы использовал es5 какой-нибудь. Но как тогда мне заполучить генераторы? Может в ts есть какой-нибудь хакерский флажок, позволяющий игнорировать те или иные конструкции?
Иван Песоченко: о, привет, не признал:)
Про хакерский флажок не знаю, к сожалению. C ts-node, кажется, дело опять-таки не выгорит:(
А если iojs 2.x поставить? я не помню, есть там модули или еще нет.
А что если форкнуть node-oracledb и просто убрать из package.json секцию engines?
на сайте iojs ВООООТ-ТАКИМИ буквами написано, что они вмёрджились в ноду, и утратили смысл существования.
В ноде 4.2.1 всё равно es6 держится на соплях. import/export не работает.
Поэтому, судя по всему, придётся мне принести в жертву генераторы и es6 во имя стройной структуры кода и синтаксиса TS.
Иван Песоченко: > вмёрджились в ноду, и утратили смысл
это понятно, но оракловое говно работает только на говне мамонта, поэтому надо найти версию достаточно старую, чтобы пакет работал, и при этом достаточно новую, чтобы были генераторы.
Константин Китманов: Ну как бы дааааа, но на кой мне эти генераторы, когда TS не компайлит в нодовский диалект ES6? Я лучше напишу хороший код, а потом когда-нибудь дождусь чуда, когда нода внедрит поддержку ортодоксального es6. И мне ничего переписывать не придётся.
С ораклом я буду чуток позже разбираться. Мысль твою я понял, спасибо. Попробую форкнуть и изменить зависимости. Там, насколько я сумел вычитать, всё упирается в NaN2