static class 属性 不支持 Babel

static class property not working with Babel

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

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

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

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

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

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

由于 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"]
};