1

test.js 파일에 export 키워드를 사용하려고합니다. test.js 파일은 매우 간단합니다.Chrome63에서 es6 내보내기 키워드를 사용할 수 없습니다.

const foo = Math.PI; 
export { foo }; 

그리고 나는 karma을 사용하여 테스트를 수행하고 있습니다. 내 Chrome 버전은 아래 로그에 표시된대로 61보다 큽니다. export 구문은 61보다 큰 크롬 버전에서 완전히 지원되므로 위의 코드가 작동해야하지만 실패합니다.

$ karma start --browsers Chrome 
01 10 2017 12:29:37.346:INFO [karma]: Karma v1.7.1 server started at http://0.0.0.0:9876/ 
01 10 2017 12:29:37.350:INFO [launcher]: Launching browser Chrome with unlimited concurrency 
01 10 2017 12:29:37.357:INFO [launcher]: Starting browser Chrome 
01 10 2017 12:29:38.288:INFO [Chrome 63.0.3205 (Mac OS X 10.11.6)]: Connected on socket PV-MAe-R6vm4JntCAAAA with id 24009783 
Chrome 63.0.3205 (Mac OS X 10.11.6) ERROR 
    Uncaught SyntaxError: Unexpected token export 
    at test/test.js:2 

왜 이런 일이 벌어 질 수 있습니까?

답변

2

ES 모듈 (importexport)과 관련된 키워드를 올바르게 해석하려면 스크립트를 모듈로로드해야합니다. 카르마 doesn't do that.

카르마가 지원하더라도 실제 응용 프로그램은 CommonJS/UMD 모듈로 구성된 NPM 패키지와 같이 번들러에서만 올바르게 처리 할 수있는 것에 의존합니다.

현재 ES 모듈과 관련된 테스트는 카르마에서 수행되어야합니다.

+0

답변을 주셔서 감사합니다. ES6 모듈을 지원하는 다른 테스트 도구가 있습니까? 나는 카르마에 정말로 묶여 있지 않으며, 가능하다면 트랜스퍼러를 추가하지 않고 모든 것을 ES6에 고집하는 것을 선호 할 것입니다. 나는 '카르마', '모카', '콰 니트'의 상대적인 능력에 익숙하지 않다. 그들 중 누구라도 ES6를 완벽하게 지원합니까? 또한 나는 어떤 bundler를 사용할지를 정말로 이해하지 못한다고 생각한다. 'Rollup '은 증발 할 수 있습니까? – Pushpendre

+0

모카는 브라우저 용 러너를 제공하지 않습니다. Jest가 있지만, 의도적으로 네이티브 모듈을 지원할 것 같지는 않습니다. 다시 말하지만, 앱이 제 3 자 모듈을 질식시킬 수 있기 때문에 비실용적입니다. 모듈을 스텁/모의/처리 할 가능성은 제로입니다. 롤업 또는 웹팩을 사용하여 앱을 트랜스 빌 딩하고 번들링 할 수 있지만 사실은 완전한 기능을 갖춘 테스트 러너 (카르마)가이를 처리한다는 것입니다. 카르마는 [플러그인을 통해] (https://github.com/babel/karma-babel-preprocessor) 않습니다. – estus

관련 문제