Es2016导入无效

时间:2017-01-11 21:31:00

标签: reactjs webpack babeljs

我一直在使用webpack和es2015作为我的反应项目,但我想更新到es2016。我认为这就像使用npm安装新的预设然后更改我的.babelrc一样简单,但是当我执行我的所有es2015语法时会抛出错误。我认为由于我的一些错误,es2016根本没有加载。

抛出的确切错误是

Uncaught SyntaxError: Unexpected token import

这是我的webpack.config.js

var webpack = require('webpack');
var path = require('path');

var BUILD_DIR = path.resolve(__dirname, 'src/client/public');
var APP_DIR = path.resolve(__dirname, 'src/client/app');

var config = {
  entry: APP_DIR + '/index.jsx',
  output: {
    path: BUILD_DIR,
    filename: 'bundle.js'
  },
  module : {
    loaders : [
      {
        test : /\.jsx?/,
        include : APP_DIR,
        loader : 'babel-loader',
        query: {
          presets: ['es2016']
        }
      },
      {
        test: /\.css$/,
        loader: 'style-loader'
      },
      {
        test: /\.css$/,
        loader: 'css-loader',
        query: {
          modules: true,
          localIdentName: '[name]__[local]___[hash:base64:5]'
        }
      },
      {
        test: /\.json$/,
        loader: 'json-loader'
      }
    ]
  },
  node: {
    fs: 'empty',
    net: 'empty',
    tls: 'empty'
  }
};

module.exports = config;

这是我的.babelrc

{
  "presets" : ["es2016", "react"]
}

2 个答案:

答案 0 :(得分:0)

es模块是2015规范的一部分,因此您还需要包含es2015预设。 es2016预设仅包含case class TestData(val s: String) { override def equals(obj: Any) = obj.isInstanceOf[TestData] && obj.asInstanceOf[TestData].s == this.s } 插件。

答案 1 :(得分:0)

要使用es2016预设,您需要添加它到预设。根据{{​​3}},ES2016:

  

ES2016 :仅编译ES2016至ES2015的内容

因此,如果你像这样更新.babelrc,它将正确转换:

{
  "presets" : ["es2015", "es2016", "react"]
}

或者您可以添加babel docs。它将包括es2015,es2016和es2017预设。

另一件事:您在.babelrc文件和webpack加载程序配置中设置预设。你只需要在一个地方设置它。