【问题标题】:How to use Decorators with electron-prebuilt-compile?如何将装饰器与电子预编译一起使用?
【发布时间】:2018-04-18 09:05:25
【问题描述】:

我在尝试在电子、反应、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)

正如我在问题中所述,我通过“electron-prebuilt-compile”包运行编译内容。直到现在它派上用场并且运行良好。

这个包的 npm 页面说它的编译是由“电子编译”授权的。 电子编译适用于 JS ES6/ES7(通过 Babel),如他们的 github page,是什么让我想知道为什么我会遇到这个“装饰器”问题,因为 ES6 或至少 ES7 带有这个特性。 查看编辑

有关如何修复此错误的任何建议? Electron-prebuilt-compile 不允许我配置 webpack.config。 也许我必须自己设置 webpack?如果这样做,如何与电子结合?

编辑
正如 estus 在他的回答中所说:ES6 不包含装饰器,但“babel-plugin-transform-decorators-legacy”包含。

【问题讨论】:

    标签: reactjs webpack ecmascript-6 electron decorator


    【解决方案1】:

    “ES7”是一个模棱两可且在技术上不正确的术语,因为它通俗地指代未包含在 ES6 中的提案(目前为 ES.next),但也曾指代 ES2016。

    包描述refers to ES2016。虽然装饰器不是现有标准的一部分,但 Babel 通过 a plugin 支持。

    The package 解释说它尊重用户.babelrc 文件,所以它应该在presets 部分包含transform-decoratorstransform-decorators-legacy,并且应该安装相应的Babel 插件。

    【讨论】:

    • 感谢您的回复!我已经知道有一个 babel 插件可以解决这个问题,但是我无法将各个部分放在一起。所以我自己设置了 webpack 和 babel 并删除了 electron-prebuilt-compile。从长远来看,结果相同,但没有回答问题,所以我会将您的答案标记为正确
    猜你喜欢
    • 1970-01-01
    • 2021-04-19
    • 2016-03-19
    • 2016-09-12
    • 2016-11-16
    • 2020-02-25
    • 2012-12-17
    • 1970-01-01
    • 2018-01-22
    相关资源
    最近更新 更多