如何修复 jsx 结束标签上的 linting 错误:“未关闭的正则表达式”?

Posted

技术标签:

【中文标题】如何修复 jsx 结束标签上的 linting 错误:“未关闭的正则表达式”?【英文标题】:How do I fix linting error on jsx closing tags : "unclosed regular expression"? 【发布时间】:2018-01-25 00:24:46 【问题描述】:

(PS 这些 SO 问题(标题不准确)均未解决或解决此问题:React Linting: Unclosed Regular Expression、unclosed regular expression、React JSX error : Unclosed regular expression)

例如,这段代码 sn-p 运行良好,但会导致 SublimeLinter 错误:

class Users extends React.Component 
  render() 

    var friends = this.props.list.filter(function(user)
        return user.friend === true;
    );
    var nonFriends = this.props.list.filter(function(user)
        return !user.friend;
    );

    return (
      <div>
        <h1>Friends</h1>
        <ul>
          ...
        </ul>
      </div>
    )
  

linter 在 &lt;/h1&gt; 结束 JSX 标记处犹豫不决,认为它是正则表达式的开始。1-2 of 2 errors: Unclosed regular expression; Unrecoverable syntax error. (42% scanned), 2 lines, 25 characters selected

我在 Sublime Text3 中安装的相关包:SublimeLinter、SublimeLinter-contrib-eslint、JSHint、Babel

编辑: 我刚刚添加了包“JSX”,但这并没有帮助。 我搜索了“sublimeLinter-jsxhint”包,但找不到。

【问题讨论】:

你是用jsx作为文件扩展名的吗?我想知道 Sublime 是不是不明白你在页面上实际上有 JSX 而不是普通的 JS。 【参考方案1】:

如果你使用 SublimeLinter-contrib-eslint 和 JSHint,你可能会遇到它们冲突的问题。我会从 Sublime 中删除 JSHint,除非你在构建管道中使用它,然后删除 eslint 包。

【讨论】:

【参考方案2】:

扩展在完整的 jsx 文件上运行 jshint,并且 jshint 不支持 jsx 语法及其功能。 我只是使用->(代码->首选项->设置->用户扩展-> JSHint配置-> JSHint:启用复选框->关闭)关闭了JShint

一种解决方案是手动关闭使用/* jshint ignore: start *//* jshint ignore: end */ 返回html 的函数周围的jshint。

【讨论】:

以上是关于如何修复 jsx 结束标签上的 linting 错误:“未关闭的正则表达式”?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 XML“开始和结束标签不匹配错误”?

如何在 Firebase 函数中使用 --fix 修复 Lint 问题

如何配置 package.json 在 js 和 jsx 文件上运行 eslint

ESLint fix自动修复所有格式问题

ESLint fix自动修复所有格式问题

ESLint fix自动修复所有格式问题