2016-08-11 5 views
1

У меня проблема при использовании генераторов. Я получаю следующее сообщение об ошибке в консоли:Ошибка синтаксиса генераторов Javascript в консоли

ERROR in ./app/redux/sagas/tracking.saga.js Module build failed: SyntaxError: C:/Workspace/teamable-frontend/app/redux/sagas/tracking.saga.js: Unexpected token (18:4)

Вот package.json:

{ 
"devDependencies": { 
    "autoprefixer-loader": "^3.2.0", 
    "babel-cli": "^6.4.5", 
    "babel-core": "^6.4.5", 
    "babel-loader": "^6.2.1", 
    "babel-plugin-transform-runtime": "^6.12.0", 
    "babel-polyfill": "^6.9.1", 
    "babel-preset-es2015": "^6.3.13", 
    "babel-preset-react": "^6.3.13", 
    "babel-preset-stage-0": "^6.5.0", 
    "babel-runtime": "^6.11.6", 
    ... 
    } 
... 
} 

И погрузчик в webpack.config:

module: { 
    loaders: [{ 
     test: /.jsx?$/, 
     loader: 'babel-loader', 
     exclude: /node_modules/, 
      query: { 
      presets: ['es2015', 'react', 'stage-0'], 
      plugins: ["transform-runtime"] 
      } 
     }, 
    ... 
} 

И функции с помощью генераторов:

import {put, call} from 'redux-saga/effects'; 
import {takeEvery} from 'redux-saga'; 

import {LOAD} from '../../constants/ActionTypes'; 
import {loadTrackingItemsSuccess, loadTrackingItemsFail} from '../actions/tracking.actions'; 
import {getTrackingItems} from '../../mocks/ListMock' 

function* loadTrackingItems() { 
    try { 
     const trackingItems = yield call(getTrackingItems); 
     yield put(loadTrackingItemsSuccess(trackingItems)); 
    } catch(ex) { 
     yield put(loadTrackingItemsFail(ex.toString())); 
    } 
} 

export function watchTrackingItemsLoad() { 
    yield* takeEvery(LOAD, loadTrackingItems); 
} 

Что я делаю неправильно?

ответ

4

yield и yield* может использоваться только внутри функции генератора. Здесь:

export function watchTrackingItemsLoad() { 
    yield* takeEvery(LOAD, loadTrackingItems); 
} 

вы используете yield* внутри нормальной функции. Либо эта функция также должна быть генератором (function* watchTrackingItemsLoad), либо вы должны вернуть объект-генератор и разрешить вызывающему абоненту (return takeEvery(LOAD, loadTrackingItems);).

+0

Ooooh человек, какая глупая ошибка! Большое спасибо! –

Смежные вопросы