静态类属性不适用于 Babel

IT技术 javascript reactjs ecmascript-6 babeljs jsdoc3
2021-05-09 00:20:38

我正在使用 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个回答

类属性不是 ES2015 规范的一部分,因此它们也不属于 ES2015 Babel 预设的一部分。向语言添加类属性的提议目前处于标准化过程的第 3 阶段,因此您需要第 3 阶段预设。

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

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

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

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

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

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