2017-04-17 26 views
7

Zaczynam nowy projekt reagowania i różdżkę wykorzystuję jako platformę testową. Pomimo dokumentów, blogów i wielu innych zasobów, takich jak stackoverflow, zawsze mam błąd "nieoczekiwanego importu tokena" związany prawdopodobnie z problemem babel, ale mój conf wydaje się być w porządku. Każda pomoc jest mile widziany.Jest, nieoczekiwany import tokenów

My Jest conf (in package.json). Moja package.json ma zależności, jak Babel Babel-żartem ustawionego-es2015 Babel-predefiniowanych reagują itp

"jest": { 
    "testMatch": [ 
     "**/?(*.)spec.js?(x)" 
    ], 
    "moduleDirectories": [ 
     "src", 
     "node_modules" 
    ], 
    "moduleNameMapper": { 
     "^lib/(.*)$": "<rootDir>/src/lib/$1", 
     "^components/(.*)": "<rootDir>/src/components/$1", 
    }, 
    "transform": { 
     "^.+\\.jsx?$": "babel-jest" 
    } 

mój .babelrc conf:

{ 
    "presets": [ 
    ["es2015", { "modules": false }], 
    "react" 
    ], 
    "plugins": [ 
    ["react-hot-loader/babel"], 
    ["transform-object-rest-spread", { "useBuiltIns": true }], 
    ["transform-runtime"] 
    ], 
    "env": { 
     "test": { 
     "presets": ["es2015", "react"] 
     } 
    } 
} 

mój plik spec:

import React from 'react'; 
import Radio from 'components/ui/radio'; 
... 

i komponenty/ui/radio (błąd import jest podniesiona w pierwszym wierszu):

import Container from './container.jsx'; 
... 

Mój pakiet sieci Web ma dwa aliasy o nazwie lib i komponenty (definiowane jako moduleNameMapper w żart).

... 
resolve: { 
    mainFiles: ['index', 'main'], 
    extensions: ['.js', '.jsx'], 
    alias: { 
    lib: helpers.getPath('src/lib/'), 
    components: helpers.getPath('src/components/'), 
    }, 
    modules: [ 
    helpers.getPath('src'), 
    helpers.getPath('node_modules'), 
    ], 
}, 
... 

Odpowiedz

3

Miałem bardzo podobny problem, a na koniec rozwiązałem go po prostu używając --no-cache podczas uruchamiania żartu.

miałem też w moich package.json zależności jak babel-żartem Babel-predefiniowanych es2015 Babel-predefiniowanych reagują itp

jest --no-cache 
+0

+1. Możesz także rozważyć po prostu wykonanie: 'npm i babel-preset-env --save-dev' i dodanie' "env" 'do twojej listy ustawień babel w package.json. Następnie możesz po prostu zainstalować dowolne gotowe ustawienia, bez konieczności dodawania ich wszystkich do listy ustawień wstępnych. – Jonathan

+0

Miałem ten sam problem, a 'jest --no-cache' nie naprawił tego, ale co/nie zrobił/naprawił to usunięcie mojego folderu node_modules i mojego pliku package-lock.json i ponowne uruchomienie' npm i '. Myślę, że stało się tak, ponieważ miałem inną wersję węzła aktywowaną, kiedy wykonałem oryginalną instalację. (Używam nvm do przełączania.) Sprawdź wersję swojego węzła! – Jonathan