Вход

Просмотр полной версии : nodejs и destructuring assignment


torsar
22.02.2016, 21:32
"use strict";

let [, ,p1,p2] = ["Юлий", "Цезарь", "Император", "Рима"];
console.log(p1);
console.log(p2);

Нода выдает ошибку:
Unexpected token
let [

Юзаю последнюю версию ноды.
Я так понимаю не поддерживает сабж.

Пробовал:
babel my.js -o out.js

out.js почему то идентичен my.js,
только кое где пробелы удалены :(

что я делаю не так?

зы в лисе код с destructuring assignment работает

yazonnile
22.02.2016, 21:57
точно бабел правильно пробовали?

https://babeljs.io/repl/#?experimental=false&evaluate=false&loose=false&spec=false&code=let%20%5B%2C%20%2Cp1%2Cp2%5D%20%3D%20%5B%22%D 0%AE%D0%BB%D0%B8%D0%B9%22%2C%20%22%D0%A6%D0%B5%D0% B7%D0%B0%D1%80%D1%8C%22%2C%20%22%D0%98%D0%BC%D0%BF %D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%22%2C%20%22%D 0%A0%D0%B8%D0%BC%D0%B0%22%5D%3B%0D%0A

torsar
23.02.2016, 10:44
Исходный код:

"use strict";

let [ , ,p1,p2] = ["Юлий", "Цезарь", "Император", "Рима"];
console.log(p1);
console.log(p2);

Выполняю команду:
babel dest-node-4forum.js

В консоль выводится:

"use strict";

let [,, p1, p2] = ["Юлий", "Цезарь", "Император", "Рима"];
console.log(p1);
console.log(p2);

Те то же самое.

Что я могу делать не так, ни пойму :(

Erolast
23.02.2016, 13:25
Юзаю последнюю версию ноды.
Я так понимаю не поддерживает сабж.
Нода еще не поддерживает деструктуризацию.


Пробовал:
babel my.js -o out.js

out.js почему то идентичен my.js
А бабель настроен хоть? В шестой версии его переделали под универсальную платформу для компиляции диалектов ES, и из коробки он вообще ничего не делает. Нужно сперва подключить соответствующие плагины (либо пресет - это уже подобранный набор плагинов).

http://babeljs.io/docs/plugins/ - общая справка.
http://babeljs.io/docs/plugins/preset-es2015/ - пресет, реализующий компиляцию всех фич ES6.
https://www.npmjs.com/package/babel-preset-es2015-node5 - пресет, реализующий компиляцию только тех фич ES6, которые еще не поддерживаются нодой.

torsar
23.02.2016, 14:18
Спасибо, помогли :).
Еще вопрос:
если я инсталю пресет в директорию со своими скриптами,
все работает.
Но если инсталю пресет глобально
(npm c ключом -g),
то babel пишет не найду пресет

Как сконфигурить так, чтоб находились пресеты,
установленные глобально?

Erolast
24.02.2016, 09:28
инсталю пресет глобально
А зачем? При таком подходе запаришься проект на другую машину переносить: придется заново подбирать все модули.
Сами разработчики советуют устанавливать все зависимости локально (http://discuss.babeljs.io/t/error-parsing-jsx-with-global-installation-babel-preset-react/59/7).

torsar
24.07.2018, 18:53
Нужен учебник или статьи по babeljs на русском.

SuperZen
25.07.2018, 12:32
$ node --version
v10.6.0

let [, , p1, p2] = ["one", "two", "three", "four"];
console.log(p1);

в консоле: three

без бабеля

torsar
27.07.2018, 10:04
Нужен учебник или статьи по babeljs на русском.