意外标记'@'当使用ES6装饰器时
Unexpected token '@' when using ES6 decorators
我有一个React项目设置,我正试图将MobX纳入其中。因此,我必须使用装饰符,即
@observable
当我这样做的时候,我得到了以下错误:
https://github.com/mobxjs/mobxModule build failed: SyntaxError: Unexpected token (5:22)
类ListStore {@observable项=["皮特","约翰","亨利","杰夫"、"鲍勃");}
My Webpack config:
module.exports = {
entry: './src/App.js',
output: {
path: __dirname,
filename: 'app.js'
},
module: {
loaders: [{
test: /'.jsx?$/,
exclude: /node_modules/,
loader: 'babel',
query: {
presets: ['es2015', 'react'],
plugins: ['transform-decorators-legacy']
}
},
{
test: /'.scss?$/,
exclude: /node_modules/,
loaders: ['style', 'css', 'sass']
}]
}
};
My ESLint配置:
{
"parserOptions": {
"ecmaVersion": 6,
"ecmaFeatures": {
"jsx": true
},
"sourceType": "module"
},
"env": {
"browser": true,
"node": true,
"es6": false
},
"ecmaFeatures": {
"modules": true
},
"rules": {
"strict": [
2,
"global"
],
"quotes": [
2,
"single"
],
"indent": [
2,
4
],
"eqeqeq": [
2,
"smart"
],
"semi": [
2,
"always"
],
"max-depth": [
2,
4
],
"max-statements": [
2,
15
],
"complexity": [
2,
5
]
}
}
作为一个说明,我是一个使用Webpack和ESLint的新手,所以这可能是一个很好的新问题。然而,在网上做了研究后,我没有找到任何有效的方法。(包括安装' transformer -decorators-legacy' Babel插件)。
我认为问题不在于装饰器,而在于属性初始化器语法。它可能也会失败:
class ListStore {
items = ['Pete', 'John', 'Henry', 'Jeff', 'Bob']
}
要支持这些,您可以添加transform-class-properties
插件:
$ npm install babel-plugin-transform-class-properties --save
(并相应地更新你的Webpack配置)
或者使用包含它的Babel预设(stage-2
, stage-1
或stage-0
)
相关文章:
- ES6构造函数返回基类的实例
- 如何在下面的ES6循环中获得前面的文本
- 分析高度属性时出现意外值{{specs.height}}.index.html
- 铬:“;未捕获的语法错误:意外的标记:"
- es6 相当于下划线查找位置
- Javascript未捕获语法错误意外的标识符错误
- ES6 类扩展本机类型使实例在某些 JavaScript 引擎中出现意外行为
- 使用带有es6的文件时,服务器端SyntaxError意外标识符
- jslint --edition=最新的意外ES6功能.常量
- ES6 给出语法错误:意外的标记)
- NodeJS (ES6): 语法错误: 意外的标记 {.
- 意外标记'@'当使用ES6装饰器时
- 意外的令牌在ES6模板字符串上是非法的
- 导出节点4中的ES6类.意外保留词
- ES6类:脚本中的意外令牌
- JSLint:意外的ES6特性
- 意外的令牌导入(webpack es6)
- 在尝试使用JS ES6时意外令牌{
- 电子ES6代码意外的令牌导入
- Karma+Webpack(babel加载程序)+ES6”;意外的令牌导入"