Как настроить eslint с помощью экспресс-приложения nodejs

js-приложение. Мне нужно использовать eslint для этого приложения. Я использую https://www.npmjs.com/package/eslint-config-airbnb и используя плагин prettier в редакторе VS Code.

.eslintrc

{
  "extends": "airbnb"
}

Я вижу, что VS Code теперь выдает много ошибок в полном проекте после добавления плагина eslint https://marketplace.visualstudio.comitems?itemName=dbaeumer.vscode-eslint и пакет npm.

Немного ошибок

[eslint] Definition for rule 'jsx-a11y/href-no-hash' was not found (jsx-a11y/href-no-hash)
[eslint] Expected linebreaks to be 'LF' but found 'CRLF'. (linebreak-style)
[eslint] Unexpected unnamed function. (func-names)
[eslint] Missing space before function parentheses. (space-before-function-paren)
[eslint] Strings must use singlequote. (quotes)
[eslint] Unexpected function expression. (prefer-arrow-callback)
[eslint] Unexpected unnamed function 'bind'. (func-names)
[eslint] Missing space before function parentheses. (space-before-function-paren)

package.json

  "devDependencies": {
    "babel": "^6.23.0",
    "babel-cli": "^6.5.1",
    "babel-core": "^6.9.0",
    "babel-eslint": "^7.2.3",
    "babel-preset-es2015": "^6.5.0",
    "babel-preset-stage-0": "6.5.0",
    "eslint": "^3.19.0",
    "eslint-config-airbnb": "^15.1.0",
    "eslint-plugin-import": "^2.7.0",
    "eslint-plugin-jsx-a11y": "^6.0.2",
    "eslint-plugin-react": "^7.4.0",
    "nodemon": "^1.12.1"
  }

index.js

import request from "superagent";

module.exports = function(req, res, next) {
  const id = "abc";

  request
    .post(url)
    .send(`p1=v1`)
    .send(`p2=v2`)
    .end(function(error, response) {}.bind(this));
  next();
};

введите описание изображения здесь

Одинаковые ошибки в каждом файле JS. Кто-нибудь знает, как их решить?


person N Sharma    schedule 04.10.2017    source источник
comment
Возможно, вас заинтересует модуль eslint-config-prettier.   -  person TGrif    schedule 04.10.2017
comment
@TGrif У меня есть это {extends: [airbnb, prettier]}, но я столкнулся с той же проблемой   -  person N Sharma    schedule 04.10.2017


Ответы (5)


1) Добавьте в свой devDependencies следующие модули, используя:

npm install --save-dev eslint
npm install --save-dev eslint-config-airbnb-base
npm install --save-dev eslint-plugin-import

2) Добавьте раздел eslintConfig в свой package.json:

"eslintConfig": {
    "extends": "airbnb-base",
    "env": {
        "es6": true,
        "browser": true
    },
    "rules": {
        "brace-style": [
            "error",
            "stroustrup"
        ],
        "comma-dangle": [
            "error",
            "never"
        ],
        "no-unused-vars": [
            "warn"
        ],
        "no-var": [
            "off"
        ],
        "one-var": [
            "off"
        ]
    }
}

3) Посетите eslint.org/docs/rules, найдите предупреждения, которые хотите изменить, и добавьте их. к eslintConfig выше.

4) Удалите файл .eslintrc в корне вашего проекта.

5) Перезагрузите IDE.

person John Doherty    schedule 10.10.2017
comment
Устранены ошибки, но как проверить работает eslint или нет. Код VS сейчас не показывает никаких ошибок - person N Sharma; 11.10.2017
comment
Внесите изменение, на которое, как вы знаете, ESLint будет жаловаться, например, на удаление точки с запятой или добавление переменной без «var». Также удалите файл .eslintrc, чтобы избежать конфликтов (сообщение обновлено) - person John Doherty; 11.10.2017
comment
да. Я перезапустил - person N Sharma; 11.10.2017
comment
Убедитесь, что в вашем файле package.json нет ошибок, таких как пропущенная запятая. - person John Doherty; 11.10.2017
comment
Я получаю это d:\abc\abc\server\node_modules\eslint-config-airbnb-base\rul‌​es\es6.js: Configuration for rule "prefer-destructuring" is invalid: Value "data["0"].VariableDeclarator" has additional properties. Value "data["0"].AssignmentExpression" has additional properties. Referenced from: airbnb-base Referenced from: d:\abc\abc\server\package.json - person N Sharma; 11.10.2017
comment
Из корня вашего проекта попробуйте удалить и повторно добавить модули узлов ... где-то что-то перепуталось - person John Doherty; 11.10.2017
comment
У меня получилось, но не повезло :( - person N Sharma; 11.10.2017
comment
Убедитесь, что VSCode обновлен, а также все плагины. - person John Doherty; 11.10.2017
comment
Это полезно для экспресс-разработки или ускорения проекта? - person EDISON J; 06.06.2019
comment
@EDISONJ да, я думаю, что это полезно для всех проектов JS, поскольку помогает обеспечить соблюдение какого-то стандарта кодирования, что должно упростить работу команд. - person John Doherty; 06.06.2019
comment
Я не уверен, что перенос всей конфигурации eslint непосредственно в пакет. Json - хороший стандарт ... что не так с использованием .eslintrc? Каков ваш источник / ссылка на это? ESlint, похоже, говорит, что оба в порядке: eslint.org/docs/user-guide/configuring, но в XP есть ряд плагинов / конвертеров (например, tslint, который устарел в пользу eslint в VS Code), которые работают с отдельными файлами. - person Cyril Duchon-Doris; 15.05.2021

Установите пакет eslint локально в свой проект.

$yarn add eslint --dev

В идеале можно сгенерировать файл конфигурации .eslintrc с помощью приведенной ниже команды, к сожалению, он устанавливает неправильные версии peerDependencies, что приводит к нежелательным ошибкам линтинга.

$./node_modules/.bin/eslint --init

Более простой способ исправить версию проблемы peerDependencies, используйте команду ниже и установите (я предлагаю вам установить пакеты, связанные с jsx, и реагировать, хотя вы можете не делать никаких вещей, связанных с React) соответствующую версию peerDependencies вместе с eslint-config-airbnb

$npm info "eslint-config-airbnb@latest" peerDependencies

Отредактируйте файл .eslintrc с приведенным ниже содержимым

{
  "extends": "airbnb",
  "plugins": [
    "react",
    "jsx-a11y",
    "import"
  ],
  "rules": {
  },
  "env": {
  }
}

* Примечание: отредактируйте файл eslintrc в зависимости от ваших правил кодирования и среды, которой вы следуете. См. руководство разработчика

person Gurucharan M K    schedule 07.03.2018
comment
Зачем нам нужны плагины react и jsx-a11y для приложения, в котором нет ни React, ни JSX? - person Unconventional Wisdom; 05.12.2020

ESLint написал сообщения о том, что вам нужно сделать. Просто прочтите это.

Правильный код с этими правилами должен быть следующим:

import request from 'superagent';

module.exports = (req, res, next) => {
  const id = 'abc';

  request
    .post(url)
    .send('p1=v1')
    .send('p2=v2')
    .end((error, response) => {
      // do something on end
    });
  next();
};
person Roman Valihura    schedule 09.10.2017

Другие ответы близки, надеюсь, этот ответ поможет в полном ответе:

1:

Файл .eslintrc.js

module.exports = {
  env: {
    es6: true,
    node: true,
  },
  extends: "eslint:recommended",
  globals: {
    Atomics: "readonly",
    SharedArrayBuffer: "readonly",
  },
  // parser: "babel-eslint",
  parserOptions: {
    ecmaVersion: 2018,
    sourceType: "module",
  },
  // plugins: [],
  rules: {
    "no-console": "off", // "warn" // "off"
  },
  settings: {},
};

2:

Файл .eslintignore

node_modules/

3:

Файл package.json

{
  "scripts": {
    "lint": "eslint \"./**/*.js\" --quiet",
    "lintFull": "eslint \"./**/*.js\"",
    "lintFix": "eslint --fix './**/*.js'"
  },
  "devDependencies": {
    "eslint": "^6.8.0",
  }
}

4:

npm i
npm run lint

Это все

----------------

Но, кроме того, если вы хотите создать свой собственный .eslintrc.js с пользовательскими настройками, такими как Typescript и т. Д., Попробуйте следующее:

1:

npm i eslint -g

2:

eslint --init

? How would you like to use ESLint? To check syntax and find problems
? What type of modules does your project use? JavaScript modules (import/export)
? Which framework does your project use? None of these
? Does your project use TypeScript? No
? Where does your code run? Node
? What format do you want your config file to be in? JavaScript
    Successfully created .eslintrc.js file in C:\repo\nodeapp1

Надеюсь, это поможет.

person Manohar Reddy Poreddy    schedule 11.05.2020

Если вы используете атом против кода ... возможно, редактору нужно установить глобально eslint.

npm install -g eslint

person Pako Navarro    schedule 04.10.2017