Browserify,Babel 6,Gulp - 扩展运算符上的意外标记

Mik*_*tin 74 javascript browserify ecmascript-6 gulp babeljs

我正在尝试让我的Browserify/Babelify/Gulp在我的项目中工作,但它不会占用传播操作符.

我从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]
Run Code Online (Sandbox Code Playgroud)

这是我的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']);
Run Code Online (Sandbox Code Playgroud)

我试图创建一个.babelrc文件,但它做同样的事情.当我删除传播操作符时,我的脚本工作.

这是发生Unexpected令牌的文件(非常简单).

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;

  }
}
Run Code Online (Sandbox Code Playgroud)

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

任何人都可以告诉我如何正确处理这个问题?谢谢

log*_*yth 163

该语法是未来的实验性建议语法,它不是es2015或者react您需要启用它的一部分.

npm install --save-dev babel-plugin-transform-object-rest-spread
Run Code Online (Sandbox Code Playgroud)

并添加

"plugins": ["transform-object-rest-spread"]
Run Code Online (Sandbox Code Playgroud)

.babelrc在保留现有presets.

或者:

npm install --save-dev babel-preset-stage-3
Run Code Online (Sandbox Code Playgroud)

stage-3在预设中使用以启用所有阶段3实验功能.

  • 我用了http://babeljs.io/docs/plugins/preset-stage-2/!非常感谢你 (2认同)
  • 目前正处于第3阶段!:d (2认同)

Dev*_*kec 21

我有同样的问题,安装了stage-2插件并修改了我的package.json文件,如下所示

"babel": {
    "presets": [
      "es2015",
      "react",
      "stage-2"
    ]
  }
Run Code Online (Sandbox Code Playgroud)