2017-02-15 10 views
11

Wdrażam testy w istniejącym projekcie, który obecnie nie ma żadnych testów. Moje testy nie zawierają kompilacji node_modules/.To konfiguracja "Błąd składni: nieoczekiwany eksport tokenu"

/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) 

Obejście Znalazłem to „białej listy” node_modules w package.json żartem config jak ten:

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

Wydaje się to hack, ponieważ trwa ponad 1 minutę, aby uruchomić prosty test, który importuje node_modules/lodash-es/lodash.js.

Każda pomoc lub kierunek jest doceniany, dzięki!

+0

Wiele węźle moduły eksportowej ES5 tak że JEST można uruchomić go pudełka bez transformacji. dlatego domyślnie jest to nie transformacja node_modules. W tym przypadku, zamrożenie es eksportuje es moduły, więc MUSISZ pozwolić, żeby był transformowany ten kod. Możesz być bezpieczny, jeśli użyjesz '"! Node_modules/lodash-es "' w swoim 'transformIgnorePatterns' zamiast tego, że jest uruchamiany tylko na babas-es. –

Odpowiedz

9

Musiałem dodać to do mojego .jestconfig:

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

zamieszczaniu pełniejszą odpowiedź tutaj:

żartem domyślnie nie przekształca node_modules ponieważ node_modules jest ogromna. Większość modułów węzłów jest pakowana w celu ujawnienia kodu ES5, ponieważ jest to możliwe do uruchomienia bez żadnej dalszej transformacji (i w dużej mierze kompatybilnej wstecz).

W twoim przypadku, loszki specjalnie eksponują moduły ES, które będą musiały być zbudowane przez Jest przez babel.

Możesz spróbować zwinąć białą listę w dół, aby Nie próbował przesyłać każdego pliku javascript w module node_modules przez babel.

myślę poprawna konfiguracja w Twoim przypadku jest:

"jest": { 
    "transformIgnorePatterns": [ 
    "/!node_modules\\/lodash-es/" 
    ] 
} 
Powiązane problemy