几个eslint的报错修改

885 阅读2分钟

eslint规则检查js语法出现的问题,对提升代码质量,具有重要参考意义。

1、使用es6类属性时,eslintParsing error: Unexpected token =

解决:安装babel-eslint,设置eslintparserbabel-eslint.

github.com/babel/babel…

{
  "parser": "babel-eslint",
  "parserOptions": {
    "ecmaVersion": 6,
    "sourceType": "module",
    "ecmaFeatures": {
      "jsx": true,
      "modules": true,
      "experimentalObjectRestSpread": true
    }
  },
  "extends": [
    "eslint:recommended",
    "plugin:prettier/recommended",
    "plugin:react/recommended"
  ],
  "env": {
    "browser": true,
    "node": true,
    "es6": true
  }
}

参考链接:
babel/babel-eslint#312
github.com/babel/babel…

2、[eslint] Expected parentheses around arrow function argument having a body with curly braces. (arrow-parens)

es6箭头函数参数期望有小括号()包围。

fs.rename(oldPath, newPath, err => {
  console.log(err);
});

修改为:

fs.rename(oldPath, newPath, (err) => {
  console.log(err);
});

3、[eslint] Split 'var' declarations into multiple statements. (one-var)

期望一行一个var来声明一个变量,而不是用一个var来声明多个变量。

var oldPathSync = path.normalize('./fs.renametest'),
  newPathSync = path.normalize('./renameTest.txt');

修改为:

var oldPathSync = path.normalize('./fs.renametest');
var newPathSync = path.normalize('./renameTest.txt');

4、[eslint] Expected exception block, space or tab after '//' in comment. (spaced-comment)

期望在注释符//后面有一个空格(space)或制表符(tab).

//同步

修改为:

// 同步

5、[eslint] Missing trailing comma. (comma-dangle)

期望对象键值对和数组最后一个元素后带逗号。
eslint.org/docs/rules/…

6、[eslint] Unary operator '++' used. (no-plusplus)

建议不使用一元运算符,如'++', '--'
eslint.org/docs/rules/…

7、[eslint] Unexpected string concatenation. (prefer-template)

建议使用es6的模版字符串语法,而不是字符串拼接.
eslint.org/docs/rules/…

console.log('Create worker. pid: ' + worker.process.pid);

修改为:

console.log(`Create worker. pid: ${worker.process.pid}`);

8、 [eslint] Unexpected require(). (global-require)

期望require的调用在模块作用域的顶层。
eslint.org/docs/rules/…

if (cluster.isMaster) {
  require('os')
    .cpus()
    .forEach(() => {
      startWorker();
    });
} else {
  require('./server')();
}

修改为:

const os = require('os');
const startServer = require('./server');

if (cluster.isMaster) {
  os.cpus().forEach(() => {
    startWorker();
  });
} else {
  startServer();
}

9、[eslint] Unexpected lexical declaration in case block. (no-case-declarations)

不允许在switch...case...case语句块中进行词法声明(使用letconstfunctionclass
eslint.org/docs/rules/…

switch (app.get('env')) {
  case 'development':
    app.use(morgan('dev'));
    break;
  case 'production':
    const logDirectory = path.join(__dirname, 'log');
    const accessLogStream = rfs('access.log', {
      interval: '1d', // rotate daily
      path: logDirectory
    });
    if (!fs.existsSync(logDirectory)) {
      fs.mkdirSync(logDirectory);
    }
    app.use(morgan('combined', { stream: accessLogStream }));
    break;
  default:
    break;
}

修改为:

const logDirectory = path.join(__dirname, 'log');
const accessLogStream = rfs('access.log', {
  interval: '1d', // rotate daily
  path: logDirectory
});

switch (app.get('env')) {
  case 'development':
    app.use(morgan('dev'));
    break;
  case 'production':
    if (!fs.existsSync(logDirectory)) {
      fs.mkdirSync(logDirectory);
    }
    app.use(morgan('combined', { stream: accessLogStream }));
    break;
  default:
    break;
}

10、[eslint] Expected literal to be on the right side of ===. (yoda)

尤达条件如此命名,因为条件的字面值首先出现
eslint.org/docs/2.0.0/…

if ('/' === req.url) {
   //...
}

修改为

if (req.url === '/') {
   //...
}

如有不对的地方,欢迎指正~~