编程时使用Babelify sourceType错误

Ben*_*Ben 9 javascript browserify ecmascript-6 reactjs babeljs

我正在使用Gulp,BrowserifyBabelify将我的源代码从ES6 + JSX编译为纯Javascript.

gulpfile.js看起来像:

var gulp = require('gulp')
var fs = require("fs")
var browserify = require("browserify")
var babelify = require("babelify")

gulp.task('es6',function(){
  return browserify({ debug: true })
    .transform(babelify.configure({
      extensions: ['.es6']
    }))
    .require("./src/es6/app.es6", { entry: true })
    .bundle()
    .on("error", function (err) { console.log("Error : " + err.message); })
    .pipe(fs.createWriteStream("./build/js/bundle.js"))
})
Run Code Online (Sandbox Code Playgroud)

我的第一行app.es6是:

"use strict"

import React from 'react'
import MenuBar from './menu'
Run Code Online (Sandbox Code Playgroud)

当我运行时$ gulp es6,我收到以下错误:

Error : 'import' and 'export' may appear only with 'sourceType: module'
Run Code Online (Sandbox Code Playgroud)

但是,当我使用Browserify的cli时,这不会发生:

$ browserify src/es6/app.es6 -t babelify -o build/js/bundle.js --extension=.es6
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何想法?

Ben*_*Ben 4

extensions:['.es6']选项需要添加到 browserify 的配置中:

browserify({ debug: true, extensions: ['.js', '.json', '.es6'] })
Run Code Online (Sandbox Code Playgroud)

整体gulpfile应该是这样的:

var gulp = require('gulp')
var fs = require("fs")
var browserify = require("browserify")
var babelify = require("babelify")

gulp.task('es6',function(){
  var extensions = ['.js','.json','.es6'];
  return browserify({ debug: true, extensions:extensions })
    .transform(babelify.configure({
      extensions: extensions
    }))
    .require("./src/es6/app.es6", { entry: true })
    .bundle()
    .on("error", function (err) { console.log("Error : " + err.message); })
    .pipe(fs.createWriteStream("./build/js/bundle.js"))
})
Run Code Online (Sandbox Code Playgroud)