As soluções oferecidas em outras questões relacionadas, como incluir as predefinições adequadas (es2015) em .babelrc, já estão implementadas em meu projeto.
Tenho dois projetos (vamos chamá-los de A e B) que usam a sintaxe do módulo ES6. No Projeto A, estou importando o Projeto B, que é instalado via npm e reside na pasta node_modules. Quando executo meu conjunto de testes para o Projeto A, recebo o erro:
SyntaxError: Importação de token inesperada
Que é precedido por esta suposta linha de código incorreta do Projeto B:
(função (exporta, requer, módulo, __filename, __dirname) {import createBrowserHistory de 'history / lib / createBrowserHistory';
O iife parece ser algo npm ou possivelmente relacionado ao babel, pois meu arquivo de origem contém apenas "import createBrowserHistory from 'history / lib / createBrowserHistory'; Os testes de unidade no conjunto de testes do Projeto B funcionam bem, e se eu remover o Projeto B como uma dependência de O Projeto A, meu conjunto de testes (ainda usando importações es6 para módulos de projeto internos) funciona muito bem.
Rastreamento de pilha completa:
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
Aqui está meu comando de teste do package.json:
"test": "mocha --compilers js:babel-core/register '+(test|src)/**/*Spec.js'"
Esta postagem StackOverflow é semelhante, mas não oferece uma solução para o meu uso da linha de comando: importar um módulo de node_modules com babel, mas falhou
--compilers
não é necessário, --require babel-register
deve ser usado em seu lugar: "Se seus módulos ES6 tiverem extensão .js, você pode npm instalar --save-dev babel-register e usar mocha --require babel-register; --compilers só é necessário se você precisar especificar uma extensão de arquivo. "
"babel":{"presets": ["es2015"]}
pois era a última coisa que estava faltando!