80

ノード 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);

「インポート」でコードが機能しない:

サーバー.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);

Number.js

'use strict';
export default class Number {

  addNumber(num1, num2) {
    return num1 + num2;
  }
}

http://node.green/もチェックして、サポートされている es6 を確認しましたが、 --harmony_modules オプションで動作しない理由を理解できませんでした。助けてください。

4

4 に答える 4

87

それらはまだ実装されていません。

ノード 6.0.0 は、ES6 機能のほとんどが完成した V8 のバージョンを使用します。残念ながら、モジュールは完成した機能の 1 つではありません。

node --v8-options | grep harmony 

進行中の調和フラグは完全には実装されておらず、通常は機能していません。

--es_staging (テストに値する調和機能を有効にします (内部使用のみ))
--harmony (完成したすべての調和機能を有効にします)
--harmony_shipping (出荷されたすべての調和機能を有効にします)
--harmony_object_observe (「harmony Object.observe」を有効にします ( in progress ))
--harmony_modules (「harmony モジュール」を有効にする (進行中))
--harmony_function_sent (「harmony function.sent」を有効にする (進行中))
--harmony_sharedarraybuffer (「harmony sharedarraybuffer」を有効にする (進行中))
--harmony_simd ("harmony simd" を有効にします (進行中))
--harmony_do_expressions (「ハーモニー do 式」を有効にする (進行中))
--harmony_iterator_close (「ハーモニー イテレーターのファイナライズ」を有効にする (進行中))
--harmony_tailcalls (「ハーモニー テール コール」を有効にする (進行中))
--harmony_object_values_entries ( "harmony Object.values / Object.entries" を有効にする (進行中)
--harmony_object_own_property_descriptors ("harmony Object.getOwnPropertyDescriptors()" を有効にする (進行中))
--harmony_regexp_property ("harmony Unicode regexp プロパティ クラス" を有効にする (進行中)) )
--harmony_function_name (「有効にする」ハーモニー関数名の推論」)
--harmony_regexp_lookbehind ("harmony regexp lookbehind" を有効にする)
--harmony_species ("harmony Symbol.species" を
有効にする) --harmony_instanceof ("harmony instanceof support" を
有効にする) --harmony_default_parameters ("harmony default parameters" を有効にする)
--harmony_destructuring_assignment (有効にする) --harmony_destructuring_bind ( "
harmony destructuring bind" を有効にする)
--harmony_tostring ("harmony toString" を
有効にする) --harmony_regexps ("harmony 正規表現拡張" を
有効にする) --harmony_unicode_regexps ("harmony unicode regexps" を有効にする)
--harmony_sloppy (「sloppy モードでの調和機能」を有効にします))
--harmony_sloppy_let (「Harmony let in sloppy mode」を有効にする)
--harmony_sloppy_function (「harmony sloppy function block scoping」を有効にする)
--harmony_proxies (「harmony プロキシ」を
有効にする) --harmony_reflect (「harmony Reflect API」を
有効にする) --harmony_regexp_subclass (「harmony regexp サブクラス化」を有効にする)

于 2016-04-27T21:31:23.333 に答える
40

これは@Paulproの回答へのコメントである必要がありますが、コメントを投稿するのに十分な担当者がいません。

Windowsユーザーの場合、同等のコマンドは次のとおりです。

node --v8-options | findstr harmony
于 2016-07-09T16:28:07.070 に答える
16

前述のとおり、ES6 モジュールはまだ実装されていません。

現在の Node.js モジュール構文である Common JS モジュールと下位互換性がある方法で ES6 モジュールを実装することは、重要な問題のようです。

ただし、ES6モジュールを含むファイル用に新しいファイル拡張子を導入する実装のドラフトがあります。.mjs

また、次のように package.json で ES6 モジュールを使用してすべてのファイルを宣言する代替アプローチを提示する反対提案があります。

{
    "modules.root": "/path/to/es6/modules"
}
于 2016-04-28T21:10:30.580 に答える