ES2015 "импорт" не работает в узле v6. 0. 0 с опцией -- harmony modules
Я использую узел v6.0.0 и хотел использовать ES2016 (ES6). Однако я понял, что синтаксис "импорта" не работает. Разве "импорт" не является фундаментальным для написания модульного кода в ES2015? Я попытался запустить узел с --harmony_modules
вариант, а также, но все еще получил ту же ошибку о "импорте". Вот код.
рабочий код без "импорта":
'use strict';
let sum = 0;
class Number {
addNumber(num1, num2) {
return num1 + num2;
}
}
let numberObj = new Number();
sum = numberObj.addNumber(1,2);
console.log("sum of two number 1 and 2 "+ sum);
Notworking код с "импорт":
сервер.js
'use strict';
import Number from "./Number";
let sum = 0;
let numberObj = new Number();
sum = numberObj.addNumber(1,2);
console.log("sum of two number 1 and 2 "+ sum);
количество.js
'use strict';
export default class Number {
addNumber(num1, num2) {
return num1 + num2;
}
}
Я тоже проверил http://node.зеленый/ чтобы увидеть поддерживаемый es6, однако не в состоянии понять, почему он не работает с параметром --harmony_modules. Пожалуйста помочь.
4 ответа:
они просто еще не реализовано.
узел 6.0.0 использует версию V8 с большинством завершенных функций ES6. К сожалению, модули не являются одной из этих завершенных функций.
node --v8-options | grep harmony
в ходе флаги гармонии не полностью реализованы и обычно не работают:
--es_staging (enable test-worthy harmony features (только для внутреннего использования))
-- гармония (включить все завершенные функции гармонии)
-- harmony_shipping (включить все поставляемые функции гармонии)
--harmony_object_observe (включить "объект гармонии.наблюдайте" (в ходе))
-- harmony_modules (включить "модули гармонии" (в ходе))
-- harmony_function_sent (включить " функцию гармонии.отправлено" (в ходе))
-- harmony_sharedarraybuffer (включить "harmony sharedarraybuffer" (в ходе))
--harmony_simd (включить "гармония Симд" (в ходе))
-- harmony_do_expressions (включить "harmony do-expressions" (в ходе))
-- harmony_iterator_close (включить "завершение итератора гармонии" (в ходе))
-- harmony_tailcalls (включить "harmony tail calls" (в ходе))
--harmony_object_values_entries (включить "объект гармонии.значения / объект.записи" (в ходе))
-- harmony_object_own_property_descriptors (включить " объект harmony.getOwnPropertyDescriptors ()" (в ходе))
-- harmony_regexp_property (включить "harmony unicode regexp классы свойств" (в ходе))
-- harmony_function_name (включить "вывод имени функции гармонии")
-- harmony_regexp_lookbehind (включить "harmony regexp lookbehind")
--harmony_species (включить "символ гармонии.вид")
-- harmony_instanceof (включить "harmony instanceof support")
-- harmony_default_parameters (включить "параметры гармонии по умолчанию")
-- harmony_destructuring_assignment (включить "harmony destructuring assignment")
-- harmony_destructuring_bind (включить "harmony destructuring bind")
-- harmony_tostring (включить "harmony toString")
-- harmony_regexps (включить "расширения регулярных выражений harmony")
-- harmony_unicode_regexps (включить " harmony unicode регулярные выражения")
-- harmony_sloppy (включить "функции гармонии в небрежном режиме")
-- harmony_sloppy_let (включить "гармония пусть в небрежном режиме")
-- harmony_sloppy_function (включить "harmony sloppy function block scoping")
-- harmony_proxies (включить "Harmony proxies")
-- harmony_reflect (включить "harmony Reflect API")
-- harmony_regexp_subclass (включить "harmony regexp subclassing")
Это должен быть комментарий к ответу @Paulpro, но у меня недостаточно репутации, чтобы опубликовать комментарий.
на Windows пользователи эквивалентная команда:
node --v8-options | findstr harmony
пока модули не будут реализованы, вы можете использовать Бабеля "transpiler" запустить ваш код:
npm install --save babel-cli babel-preset-node6 ./node_modules/.bin/babel-node --presets node6 ./your_script.js
см.https://www.npmjs.com/package/babel-preset-node6 и https://babeljs.io/docs/usage/cli/
минусы: это имеет различные недостатки, такие как дополнительное время компиляции, который может быть значительным, и теперь вам нужны карты источник для отладки, просто говорю.
Как указано выше, модули ES6 еще не реализованы.
представляется нетривиальной проблемой реализовать модули ES6 таким образом, чтобы они были обратно совместимы с общими модулями JS, которые являются текущим узлом.синтаксис модуля js.
однако проект реализации, которая вводит новое расширение файла -
.mjs
- для файлов, содержащих модули ES6.кроме того, есть встречное предложение что представьте альтернативный подход объявления всех файлов с модулями ES6 в пакете.json вот так:
{ "modules.root": "/path/to/es6/modules" }