【问题标题】:static class property not working with Babel静态类属性不适用于 Babel
【发布时间】:2017-03-15 00:35:07
【问题描述】:

我正在使用 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"]
  }
}

【问题讨论】:

    标签: javascript reactjs ecmascript-6 babeljs jsdoc3


    【解决方案1】:

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

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

    或者,您可以自己安装类属性插件:

    https://babeljs.io/docs/en/babel-plugin-proposal-class-properties

    【讨论】:

      【解决方案2】:

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

      module.exports = {
        plugins: [
          [require("@babel/plugin-proposal-class-properties"), { loose: false }]
        ],
        presets: ["@babel/preset-env", "@babel/preset-react"]
      }; 
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-11
          相关资源
          最近更新 更多