.babelrc에 적절한 사전 설정 (es2015)을 포함하는 것과 같은 다른 관련 질문에서 제공되는 솔루션은 이미 내 프로젝트에 구현되어 있습니다.
ES6 모듈 구문을 사용하는 두 개의 프로젝트 (A와 B라고 부릅니다)가 있습니다. 프로젝트 A에서는 npm을 통해 설치되고 node_modules 폴더에있는 프로젝트 B를 가져옵니다. 프로젝트 A에 대한 테스트 스위트를 실행할 때 오류가 발생합니다.
SyntaxError : 예기치 않은 토큰 가져 오기
프로젝트 B의 잘못된 코드 줄이 앞에 있습니다.
(function (exports, require, module, __filename, __dirname) {import createBrowserHistory from 'history / lib / createBrowserHistory';
내 소스 파일에 "import createBrowserHistory from 'history / lib / createBrowserHistory'만 포함되어 있기 때문에 iife는 npm 또는 바벨과 관련된 것으로 보입니다. 프로젝트 B의 테스트 스위트에서 단위 테스트가 잘 실행되고 프로젝트 B를 종속성으로 제거하면 프로젝트 A, 내 테스트 스위트 (내부 프로젝트 모듈에 여전히 es6 가져 오기 사용)가 잘 작동합니다.
전체 스택 추적 :
SyntaxError: Unexpected token import
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:374:25)
at Module._extensions..js (module.js:405:10)
at Object.require.extensions.(anonymous function) [as .js] (/ProjectA/node_modules/babel-register/lib/node.js:138:7)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Module.require (module.js:354:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (actionCreators.js:4:17)
at Module._compile (module.js:398:26)
at loader (/ProjectA/node_modules/babel-register/lib/node.js:130:5)
at Object.require.extensions.(anonymous function) [as .js] (/ProjectA/node_modules/babel-register/lib/node.js:140:7)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Module.require (module.js:354:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/ProjectA/src/components/core/wrapper/wrapper.js:28:23)
at Module._compile (module.js:398:26)
at loader (/ProjectA/node_modules/babel-register/lib/node.js:130:5)
at Object.require.extensions.(anonymous function) [as .js] (/ProjectA/node_modules/babel-register/lib/node.js:140:7)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Module.require (module.js:354:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/ProjectA/src/components/core/wrapper/wrapperSpec.js:15:16)
at Module._compile (module.js:398:26)
at loader (/ProjectA/node_modules/babel-register/lib/node.js:130:5)
at Object.require.extensions.(anonymous function) [as .js] (/ProjectA/node_modules/babel-register/lib/node.js:140:7)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Module.require (module.js:354:17)
at require (internal/module.js:12:17)
at /ProjectA/node_modules/mocha/lib/mocha.js:219:27
at Array.forEach (native)
at Mocha.loadFiles (/ProjectA/node_modules/mocha/lib/mocha.js:216:14)
at Mocha.run (/ProjectA/node_modules/mocha/lib/mocha.js:468:10)
at Object.<anonymous> (/ProjectA/node_modules/mocha/bin/_mocha:403:18)
at Module._compile (module.js:398:26)
at Object.Module._extensions..js (module.js:405:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Function.Module.runMain (module.js:430:10)
at startup (node.js:141:18)
at node.js:980:3
다음은 package.json의 테스트 명령입니다.
"test": "mocha --compilers js:babel-core/register '+(test|src)/**/*Spec.js'"
이 StackOverflow 게시물은 비슷하지만 명령 줄 사용에 대한 솔루션을 제공하지 않습니다. babel을 사용하여 node_modules에서 모듈을 가져 오지만 실패했습니다.