eslint局部禁用

今天git上clone了一个vue-element-admin玩,自己编译后出现报错在正则表达式中出现了未预料的控制字符:\x00, \xff]/ig:
eslint局部禁用_第1张图片
然后找到src/utils/index.js第84行:
eslint局部禁用_第2张图片
查看报错信息中给出的URL(https://eslint.org/docs/rules/no-control-regex), 发现ESLint有个规则:

禁止正则表达式中的控制字符(no-control-regex)(disallow control characters in regular expressions)
控制字符是ASCII范围0-31中的特殊,不可见字符。这些字符在JavaScript字符串中很少使用,因此包含这些字符的正则表达式很可能是错误的。

此处需要禁用ESLint对该语句的校验,网上有说法是将webpack中的配置文件中启用ESLint校验的代码注释掉或者将编辑器中的ESLint插件卸掉,这么做是不是也太简单粗暴了?不启用ESLint校验,编写代码犹如野马脱缰,真可以让我们的某些同行“天马行空”。而此处ESLint不过是有点类似一个杀毒过猛的杀毒软件,如此因噎废食,只能呵呵了。

我这里想要在代码中局部禁用这条规则,有多种方法:

/**
 * get getByteLen
 * @param {Sting} val input value
 * @returns {number} output value
 */
export function getByteLen(val) {
  /* eslint-disable no-control-regex */   // 在本函数中禁用no-control-regex规则
  let len = 0
  for (let i = 0; i < val.length; i++) {
    if (val[i].match(/[^\x00-\xff]/ig) != null) {
      len += 1
    } else { len += 0.5 }
  }
  return Math.floor(len)
}

或者

/**
 * get getByteLen
 * @param {Sting} val input value
 * @returns {number} output value
 */
export function getByteLen(val) {
  let len = 0
  for (let i = 0; i < val.length; i++) {
      if (val[i].match(/[^\x00-\xff]/ig) != null) {// eslint-disable-line          // 直接在本行中禁用eslint
      len += 1
    } else { len += 0.5 }
  }
  return Math.floor(len)
}

再或者

/**
 * get getByteLen
 * @param {Sting} val input value
 * @returns {number} output value
 */
export function getByteLen(val) {
  let len = 0
  for (let i = 0; i < val.length; i++) {
    // eslint-disable-next-line           // 在下一行禁用eslint,类似上一种方法,只是写的位置不同罢了
      if (val[i].match(/[^\x00-\xff]/ig) != null) {
      len += 1
    } else { len += 0.5 }
  }
  return Math.floor(len)
}

亲测可用!

你可能感兴趣的:(vue)