静态类属性不使用Babel

时间:2016-11-01 19:36:21

标签: javascript reactjs ecmascript-6 babeljs jsdoc3

我正在使用JSDOC,所有它支持npm插件来创建漂亮的文档。 jsdoc正在运行并解析JSX文件时遇到困难,它总是抛出错误,如下面的=符号

SyntaxError: unknown: Unexpected token
export default class SaveDesign extends Component {
 static displayName = 'SaveDesign';
}

conf.json文件

{
  "source": {
    "include": [ "src/app/test.js", "src/app/components/Modals/Template/SaveDesign.jsx"],
    "exclude": [ "src/fonts", "src/icons", "src/less", "src/vector-icon" ],
    "includePattern": ".+\\.js(doc|x)?$",
    "excludePattern": "(^|\\/|\\\\)_"
  },
  "plugins": ["node_modules/jsdoc-babel"],
  "babel": {
    "extensions": ["js", "es6", "jsx"],
    "presets": ["es2015"]
  },
  "jsx": {
    "extensions": ["js", "jsx"]
  }
}

3 个答案:

答案 0 :(得分:7)

类属性不是ES2015规范的一部分,因此它们也不属于ES2015 Babel预设。 The proposal to add class properties to the language目前处于标准化过程的第2阶段,因此您需要第2阶段预设。

https://babeljs.io/docs/plugins/preset-stage-2/

或者,您可以单独安装类属性插件:

http://babeljs.io/docs/plugins/transform-class-properties/

答案 1 :(得分:0)

@Joe谢谢是的,你提到的插件将有助于解决问题。在我的情况下,我解决它的方式是确保将所有.babelrc依赖项复制到jsdoc babel属性以及我错过了这件事给了我所有的错误。

答案 2 :(得分:0)

由于阶段2,阶段3或任何其他阶段预设已在babel 7或更高版本中删除,因此您必须单独添加插件。 请使用“ require()”导入插件,否则它将无法正常工作。 这是.bablerc文件-

from netaddr import IPNetwork, IPAddress

def get_client_ip(request):
    forbiden_ip_subnets = [...list of forbidden ip subnets...]
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    ip = 0
    if x_forwarded_for:
        ip = x_forwarded_for.split(',')[0]
    else:
        ip = request.META.get('REMOTE_ADDR')
    for ip_sub in forbiden_ip_subnets:
        if IPAddress(ip) in IPNetwork(ip_sub):
            from django.http import HttpResponseForbidden
            return HttpResponseForbidden()