[javascript] –harmony_modules 옵션을 사용하여 노드 v6.0.0에서 ES2015 “가져 오기”가 작동하지 않음

노드 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);

“가져 오기”로 작동하지 않는 코드 :

server.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 옵션과 함께 작동하지 않는 이유를 이해할 수 없었습니다. 도와주세요.



답변

아직 구현되지 않았습니다.

Node 6.0.0은 대부분의 ES6 기능이 완료된 V8 버전을 사용합니다. 불행히도 모듈은 완성 된 기능 중 하나가 아닙니다.

node --v8-options | grep harmony

진행중인 조화 플래그가 완전히 구현되지 않았으며 일반적으로 작동하지 않습니다.

–es_staging (테스트 할만한 하모니 기능 활성화 ( 내부 전용 ))
–harmony (완성 된 모든 하모니 기능
활성화 ) –harmony_shipping (제공된 모든 하모니 기능
활성화 ) –harmony_object_observe ( “harmony Object.observe”활성화 ( in progress ))
–harmony_modules ( “harmony modules”활성화 ( 진행 중 ))
–harmony_function_sent ( “harmony function.sent”활성화 ( 진행 중 ))
–harmony_sharedarraybuffer ( “harmony sharedarraybuffer 활성화 ( 진행 중 )))
–harmony_simd ( “harmony simd”활성화 ( 진행 중 ))
–harmony_do_expressions ( “harmony do-expressions”
활성화 ( 진행 중 ))
–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_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 ( “조잡한 모드에서 조화 기능 활성화”)
–harmony_sloppy_let ( “조잡한 모드에서 하모니 렛”활성화)
–harmony_sloppy_function ( “조잡한 기능 블록 범위 지정”
활성화 ) –harmony_proxies ( “조화 프록시”
활성화 ) –harmony_reflect ( “harmony Reflect API”
활성화 ) –harmony_regexp_subclass ( “조화 정규식 하위 분류”활성화)


답변

@Paulpro의 답변에 대한 댓글이어야하지만 댓글을 게시 할 충분한 담당자가 없습니다.

들어 윈도우 사용자에 해당하는 명령은 다음과 같습니다

node --v8-options | findstr harmony


답변

모듈이 구현 될 때까지 Babel “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-node6https://babeljs.io/docs/usage/cli/

단점 : 여기에는 추가 컴파일 시간과 같은 다양한 단점이 있으며 이는 중요 할 수 있으며 이제 디버깅을위한 소스 맵이 필요합니다. 그냥 말해.


답변

위에서 언급했듯이 ES6 모듈은 아직 구현되지 않았습니다.

현재 Node.js 모듈 구문 인 Common JS 모듈과 역 호환되는 방식으로 ES6 모듈을 구현하는 것은 사소한 문제로 보입니다.

그러나 ES6 모듈을 포함하는 파일에 대해 새로운 파일 확장자를 도입하는 구현 초안.mjs있습니다.

또한 package.json에서 ES6 모듈이있는 모든 파일을 다음과 같이 선언하는 대안적인 접근 방식을 제시하는 반대 제안 이 있습니다.

{
    "modules.root": "/path/to/es6/modules"
}


답변