我在电子,反应,redux项目中尝试使用装饰器时遇到了一个令人讨厌的语法错误。
Failed to compile B:/Projekte/sketches/electron-react-get-
started/app/pages/Layout.js: B:/Projekte/sketches/electron-react-get-
started/app/pages/Layout.js: Unexpected token (7:0)
SyntaxError: B:/Projekte/sketches/electron-react-get-
started/app/pages/Layout.js: Unexpected token (7:0)
5 | import {fetchUsers} from "../actions/userActions";
6 |
> 7 | @connect((store) => {
| ^
8 | return {
9 | users: store.users
10 | }
at Parser.pp$5.raise (B:\Projekte\sketches\electron-react-get-
started\node_modules\babylon\lib\index.js:4454:13)
at Parser.pp.unexpected (B:\Projekte\sketches\electron-react-get-
started\node_modules\babylon\lib\index.js:1761:8)
at Parser.pp$1.parseDecorator (B:\Projekte\sketches\electron-react-get-
started\node_modules\babylon\lib\index.js:1939:10)
at Parser.pp$1.parseDecorators (B:\Projekte\sketches\electron-react-get-
started\node_modules\babylon\lib\index.js:1924:26)
at Parser.pp$1.parseStatement (B:\Projekte\sketches\electron-react-get-
started\node_modules\babylon\lib\index.js:1818:10)
at Parser.parseStatement (B:\Projekte\sketches\electron-react-get-
started\node_modules\babylon\lib\index.js:5910:22)
at Parser.pp$1.parseBlockBody (B:\Projekte\sketches\electron-react-get-
started\node_modules\babylon\lib\index.js:2268:21)
at Parser.pp$1.parseTopLevel (B:\Projekte\sketches\electron-react-get-
started\node_modules\babylon\lib\index.js:1778:8)
at Parser.parse (B:\Projekte\sketches\electron-react-get-
started\node_modules\babylon\lib\index.js:1673:17)
at parse (B:\Projekte\sketches\electron-react-get-
started\node_modules\babylon\lib\index.js:7305:37)
正如我在问题中所述,我通过"电子预建 - 编译"运行编译的东西。包。到目前为止,它很方便,工作正常。
此软件包的npm页面说它的编译是由电子编译"授权的。 电子编译适用于JS ES6 / ES7(通过Babel),如其所述 github page,是什么让我想知道为什么我会遇到这个" decorator"问题,因为ES6或至少ES7附带此功能。 参见编辑
有关如何解决此错误的任何建议? Electron-prebuilt-compile不允许我配置webpack.config。 也许我必须自己设置webpack?如果我这样做,如何将它与电子结合?
修改
正如他在回答中所说:ES6并不包括装饰者,但是" babel-plugin-transform-decorators-legacy"确实
答案 0 :(得分:0)
' ES7'这是一个含糊不清且技术上不正确的术语,因为它通俗地提到了ES6中没有包含的提案(目前作为ES.next),但也提到了ES2016。
包裹说明refers to ES2016。装饰器不是现有标准的一部分,而是通过a plugin在Babel中支持。
The package说明它尊重用户.babelrc
文件,因此它应在transform-decorators
部分中包含transform-decorators-legacy
或presets
,并且应安装相应的Babel插件