Browserify,Babel 6,Gulp - 传播运算符上的意外令牌

我正在尝试让我的 Browserify/Babelify/Gulp 在我的项目中工作,但它不会使用扩展运算符.

I'm trying to get my Browserify/Babelify/Gulp working in my project, but it won't take the spread operator.

我从我的 gulpfile 中得到了这个错误:

I got this error from my gulpfile:

[SyntaxError: /Users/mboutin2/Desktop/Todo-tutorial/src/reducers/grocery-list-reducers.js: Unexpected token (16:8) while parsing file: /Users/mboutin2/Desktop/Todo-tutorial/src/reducers/grocery-list-reducers.js]

这是我的 gulpfile.js

This is my gulpfile.js

var gulp = require('gulp');
var source = require('vinyl-source-stream');
var browserify = require('browserify');
var sourcemaps = require('gulp-sourcemaps');
var uglify = require('gulp-uglify');
var buffer = require('vinyl-buffer');
var babelify = require('babelify');

gulp.task('build', function () {
  return browserify({entries: './src/client/app.js', extensions: ['.js'], debug: true})
    .transform(babelify, {presets: ['es2015', 'react']})
    .bundle()
    .on('error', function (err) {
      console.error(err);
      this.emit('end');
    })
    .pipe(source('app.min.js'))
    .pipe(buffer())
    .pipe(sourcemaps.init({loadMaps: true}))
    .pipe(uglify())
    .pipe(sourcemaps.write('./'))
    .pipe(gulp.dest('./public/js'));
});

gulp.task('default', ['build']);

我尝试创建一个 .babelrc 文件,但它做同样的事情.当我删除传播运算符时,我的脚本就可以工作了.

I tried to create a .babelrc file, but it do the same thing. And my script works when i delete the spread operator.

这是出现 Unexpected token 的文件(很简单).

This is the file where the Unexpected token occurs (quite simple).

import utils from '../utils/consts';

const initialState = {
  itemList: [
    {name: 'Apple', type: 'Fruit'},
    {name: 'Beef', type: 'Meat'}
  ]
};

export function groceryList(state = initialState, action = {}) {

  switch(action.type) {

    case utils.ACTIONS.ITEM_SUBMIT:
      return {
        ...state,
        itemList: [
          ...state.itemList,
          {name: action.name, type: action.itemType}
        ]
      };

    default:
      return state;

  }
}

我不知道这有什么问题,我在 Github 和 Babel 网站上的设置页面上阅读了一些问题,但我无法使其正常工作.

I don't know what doesn't work in this, i read some issues on Github and the setup page on Babel website, but i can't make it work correctly.

谁能告诉我如何正确处理这个问题?谢谢

Can anyone show me how to handle this correctly? Thank you

推荐答案

该语法是未来的实验性提议语法,它不属于 es2015react所以你需要启用它.

That syntax is an experimental proposed syntax for the future, it is not part of es2015 or react so you'll need to enable it.

npm install --save-dev babel-plugin-transform-object-rest-spread

并添加

"plugins": ["transform-object-rest-spread"]

进入 .babelrc 以及你现有的 presets.

into .babelrc alongside your existing presets.

或者:

npm install --save-dev babel-preset-stage-3

并在您的预设中使用 stage-3 来启用所有 stage-3 实验功能.

and use stage-3 in your presets to enable all stage-3 experimental functionality.

相关文章