如何在React Server Side Rendered App中使用装饰器?

时间:2018-12-05 07:56:01

标签: reactjs decorator serverside-rendering babel-loader

我有一个正在运行的应用程序(带有SSR)。最近,我尝试添加decorator支持。我已经完成了配置,并且应用程序在浏览器中运行时运行良好(因为在浏览器中运行的代码是babel编译的)。

但是代码(包含装饰器的组件)在服务器端呈现时会中断-可能是因为正在执行的代码没有被转译并且节点无法理解@符号。

它抛出错误以下

   (node:1932) UnhandledPromiseRejectionWarning: SyntaxError: 
src/components/common/InputBox/InputBox.js: Unexpected token (8:0)

        import './InputBox.scss';
           7 |
        >  8 | @autobind
             | ^
           9 | class InputBox extends Component {
          10 |     constructor(props) {
          11 |         super(props);

我该如何解决?

谢谢

1 个答案:

答案 0 :(得分:1)

似乎您尚未设置对装饰器的支持。这意味着您的代码没有被转换,并且using GMap.NET; using GMap.NET.MapProviders; GMaps.Instance.Mode = AccessMode.ServerAndCache; map.CacheLocation = @"maps"; map.Zoom = zoom; map.Position = new PointLatLng(lat, lng); (运行服务器脚本)不知道如何处理node类型的代码。装饰器处于第二阶段(请参见https://tc39.github.io/proposal-decorators/),而不是该语言的一部分。如果您使用babel转换代码,请添加相应的插件(@foo)。