2017-02-15 1 views
11

Ich implementiere Tests in ein bestehendes Projekt, das derzeit keine Tests hat. Meine Tests kompilieren node_modules/ Importe nicht.Jest setup "SyntaxError: Unerwarteter Token-Export"

/Users/me/myproject/node_modules/lodash-es/lodash.js:10 
export { default as add } from './add.js'; 
^^^^^^ 
SyntaxError: Unexpected token export 

    at transformAndBuildScript (node_modules/jest-runtime/build/transform.js:320:12) 
    at Object.<anonymous> (app/reducers/kind_reducer.js:2:43) 
    at Object.<anonymous> (app/reducers/index.js:12:47) 

Die Abhilfe, die ich gefunden habe, ist zu ‚weißen Liste‘ node_modules in package.json Scherz Config wie folgt aus:

"jest": { 
    "transformIgnorePatterns": [ 
     "!node_modules/" 
    ] 
    } 

Dies scheint wie ein Hack, weil es mehr als 1 Minute dauert einfach laufen testen, dass Importe node_modules/lodash-es/lodash.js.

Jede Hilfe oder Richtung ist zu schätzen, danke!

+0

Viele Knotenmodule ES5 Export, so dass jest es laufen aus von der Box ohne umzuwandeln. deshalb transformiert jest standardmäßig node_modules nicht. In diesem Fall exportiert lodash-es speziell ES-Module, also MÜSSEN Sie jest diesen Code transformieren lassen. Sie können sicher sein, wenn Sie "! Node_modules/lodash-es" in Ihren "transformIgnorePatterns" verwenden, damit der Scherz nur in lodash-es läuft. –

Antwort

9

ich dieses Add musste in meine .jestconfig:

"transformIgnorePatterns": [ 
    "<rootDir>/node_modules/(?!lodash-es)" 
] 
9

Posting eine vollständigere Antwort hier:

Jest standardmäßig nicht transformiert node_modules weil node_modules riesig. Die meisten Knotenmodule sind so verpackt, dass ES5-Code verfügbar ist, da dieser ohne weitere Umwandlung (und weitgehend abwärtskompatibel) ausgeführt werden kann.

In Ihrem Fall stellt lodash-es ausdrücklich ES-Module zur Verfügung, die von Jest über babel erstellt werden müssen.

Sie können versuchen, Ihre Whitelist einzuschränken, damit Jest nicht versucht, jede JavaScript-Datei in node_modules über babel zu übergeben.

Ich denke, die richtige Konfiguration in Ihrem Fall ist:

"jest": { 
    "transformIgnorePatterns": [ 
    "/!node_modules\\/lodash-es/" 
    ] 
} 
Verwandte Themen