2017-04-20 1 views
3

Python 배경에서 왔으며 Node.js를 처음 사용하면서 Node.js REPL을 사용하여 대화식으로 코드를 시도하는 것이 놀랍도록 어려웠습니다. 내가 직면 한 주요 문제는 imports입니다.Node.js의 ES6 스타일 가져 오기 REPL

ES6 스타일 가져 오기는 Node.js REPL에서 작동하지 않으며 require을 사용하여 CommonJS 스타일 가져 오기를 사용해야합니다. 예 : 노드 프롬프트에 import rxjs을 쓸 수없고 require('rxjs')을 사용해야합니다. 이렇게하면 붙여 넣기 스크립트를 노드 REPL에 복사하여 테스트를 신속하게 수행 할 수 없으며 모든 ES6 스타일 가져 오기를 먼저 반 직관적 인 느낌을주는 가져 오기로 변환해야합니다.

Node.js REPL에서 ES6 스타일 가져 오기를 사용할 수있는 간단한 방법이 있습니까?

처럼 : 나는 심지어 모듈 가져 오기를 지원하지 않는 것 babel-node을 시도

$ node
> import 'rxjs';
> import {map} from 'rxjs/operator/map';

.

답변

1

답변이 아니요,이거나 적어도 이 아닌데입니다. 앞으로 지원 될 예정인 것으로 알고 있지만 ES2015 importexport은 CommonJS requiremodule.exports의 내부 대체 (in-place substitution)로 작동하지 않습니다. 이것은 단순히 같은 방식으로 작동하지 않기 때문입니다. 자세한 내용은 this Node.js blog postthis SO question에서 확인할 수 있습니다.

(지금 babel-cli라고하는) babel-node를 사용하여 귀하의 아이디어가 나쁘지 않았다

: babel는 두 유형의 시스템을 위해 설계 모듈을 검색 할 수 있습니다 심의 종류 상호 운용 require 기능을 구현합니다. 불행하게도, official website 주장은 REPL에서이 기능을 지원 부족 :

ES6-style module-loading may not function as expected

Due to technical limitations ES6-style module-loading is not fully supported in a babel-node REPL.

그럼에도 불구하고,이 문제는 어쨌든 REPL에 의존해서는 안 프로덕션 코드에 적용되지 않습니다. 대신 REPL을 사용하여, 당신은 babel-cli을 포함하는 베어 본 프로젝트에 스크립트를 작성 고려하고 transpiled 버전을 실행하기위한 스크립트를 만들 수 있습니다 : 바벨 - cli`가 보이지 않는다`사용

{ 
    "name": "my-test-chamber", 
    "private": true, 
    "scripts": { 
    "build": "babel src/main.js -o lib/main.js", 
    "start": "npm run build && node lib/main.js" 
    }, 
    "dev-dependencies": { 
    "babel-cli": "^6.0.0" 
    } 
} 
+0

이 솔루션을 찌르다. 임포트 라인'import 'rxjs';'에서'SyntaxError : Unexpected token import'를 얻습니다. 그러나 이것은 REPL에서 ES6 가져 오기를 처리 할 수있는 방법인지 여부에 대한 내 질문에 대한 대답입니다. Node.js가 향후 릴리스에서 곧이를위한 솔루션을 소개하기를 바랍니다. –

+0

@PranjalMittal'rxjs'가 무엇인지 모르겠지만 따옴표 사이에 모듈 이름을 넣어야합니다. 그렇다면 네임 스페이스 안에 패키지의 모든 것을 넣을 수 있습니다 :'import * as rxks from 'rxks'. 여전히 REPL이 작동하기에 충분하지 않습니다. –