未闭合的正则表达式

3
我有以下代码:

render() {  
         /* jshint laxbreak: true */  
         var buttonClasses = classSet({  
              'Button' : true,  
        }),  
        buttonContainerClasses = classSet({  
          'u-textRight': !this.props.fullscreen  
        }),  
        allowedTypes = /^(submit|button)$/i,  
        type = allowedTypes.test(this.props.type)  
             ? this.props.type  
             : 'button';  

    return (  
      <div className={buttonContainerClasses}>  
        <input  
          type = {type}  
          value = {this.props.label}  
        />  
      </div>  
   );  
}  

"JSHint 给我以下错误:"
Unclosed regular expression

在关闭输入标签的行(倒数第二行)。

我目前正在尝试升级到React 0.12.2,并修复所有错误。有什么想法如何解决它?


1
我一直以为 JSHint 只能验证 JavaScript,而不是 HTML。 - Sebastian Simon
1
请发布实际的Javascript代码。仅凭摘录很难看出发生了什么,因为其中没有JS代码。看起来JSHint看到/>并认为那是一个RegExp字面量的开始。 - Barmar
@Barmar 我已经编辑了问题,并附上了完整的代码(有些被剥离了,如果我发布了全部内容,我想我会遇到麻烦 :/ ) - soapycat
我刚刚查看了React网站。你那里所使用的东西叫做JSX。如果你想使用JSHint,你需要转换为编译后的语法。请访问https://facebook.github.io/react/并点击“Compiled JS”选项卡以查看区别。 - Barmar
仍然不明白为什么它在React 0.11中有效,而在React 0.12中无效。嗯,我会继续挖掘。谢谢! - soapycat
显示剩余6条评论
2个回答

1
我已经想通了!所以在React 0.12中,预处理语句可以被删除,但是没有它,lint将无法工作,因此会弹出错误。感谢所有帮助过我的人!

7
“the pragma can be removed”是什么意思,我该如何删除它? - SherylHohman

0
该扩展在完整的jsx文件上运行jshint,但jshint不支持jsx语法及其功能。 我只需使用->(代码->首选项->设置->用户扩展->JSHint配置->JSHint:启用勾选框->关闭),即可关闭JShint。
一种解决方法是在返回HTML的函数周围手动关闭jshint,使用 / * jshint ignore:start * / / * jshint ignore:end * /
这个答案也可以在这里阅读:https://dev59.com/Q6Tja4cB1Zd3GeqPA2SL#70835790,适用于类似的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接