javascript - 如何让装饰器与 babel 和 webpack 一起工作?

标签 javascript decorator webpack babeljs ecmascript-next

我有以下设置:

{
  "babel-core": "~5.8.25",
  "babel-eslint": "^4.1.3",
  "babel-loader": "~5.3.2",
  "babel-polyfill": "^6.2.0",
  "eslint": "^1.7.3",
  "eslint-config-airbnb": "^0.1.0",
  "eslint-loader": "~1.1.0",
  "eslint-plugin-angular": "~0.12.0",
  // ...
}

网页包:

module: {
  preLoaders: [{ test: /\.js$/, exclude: /node_modules/, loader: 'eslint-loader'}],
  loaders: [
    {
      test: /\.js$/,
      exclude: /node_modules/,
      loaders: ['ng-annotate', 'babel-loader?plugins[]=transform-decorators-legacy'],
    }
  ]
}

但是我得到以下错误:

TypeError: The plugin "transform-decorators-legacy" didn't export a Plugin instance 

有谁知道我在这里做错了什么?

更新

我已经升级到 Babel 6,现在有以下设置:

{
  "babel-core": "^6.0.0",
  "babel-eslint": "^4.1.3",
  "babel-loader": "^6.0.0",
  "babel-plugin-transform-decorators-legacy": "^1.3.4",
  "babel-polyfill": "^6.2.0",
  "babel-preset-es2015": "^6.0.0",
  "babel-preset-stage-0": "^6.5.0",
  "eslint": "^1.10.0",
  "eslint-config-airbnb": "^4.0.0",
  "eslint-loader": "^1.2.0",
  "eslint-plugin-angular": "^0.15.0",
  // ...
}

和:

module: {
  preLoaders: [{ test: /\.js$/, exclude: /node_modules/, loader: 'eslint-loader'}],
  loaders: [
    {
      test: /\.js$/,
      exclude: /node_modules/,
      loaders: ['ng-annotate', 'babel?presets[]=es2015&presets[]=stage-0&plugins[]=transform-decorators-legacy'],
    }
  ]
},

但是得到 Parsing error: Unexpected token ILLEGAL 指的是装饰器。

最佳答案

经过一些搜索和this SO answer , 我能够在不使用 .babelrc 文件的情况下让它工作。

安装transform-decorators-legacy

npm install --save-dev babel-plugin-transform-decorators-legacy

webpack.config.js中包含插件

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

关于javascript - 如何让装饰器与 babel 和 webpack 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35268827/

相关文章:

javascript - 公开通过 webpack bundle 的 javascript 全局变量

javascript - 数据库库

javascript - typescript 中的类装饰器

javascript - 根据项目中设置的条件,有条件地将scss包含在vuejs组件npm包中

Python装饰器函数执行

python - 将装饰器函数合并为类

javascript - 语法错误: Unexpected token in react project

javascript - WebStorm:如何禁止编辑生成的 JavaScript 文件

javascript - 简单的谷歌地图标记点击事件?

javascript - 对多个字段进行数组过滤