如何使用 nodejs express 应用程序配置 eslint

Posted

技术标签:

【中文标题】如何使用 nodejs express 应用程序配置 eslint【英文标题】:How to configure eslint with nodejs express application 【发布时间】:2018-03-15 17:18:51 【问题描述】:

js 应用程序。我需要为此应用程序使用 eslint。我正在使用 https://www.npmjs.com/package/eslint-config-airbnb 并在 VS Code 编辑器中使用更漂亮的插件。

.eslintrc


  "extends": "airbnb"

在添加 eslint 插件 https://marketplace.visualstudio.comitems?itemName=dbaeumer.vscode-eslint 和 npm 包后,我看到 VS Code 现在在整个项目中给了我很多错误。

很少的错误

[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 文件中的错误类型相同。有谁知道如何解决这些问题?

【问题讨论】:

您可能对eslint-config-prettier 模块感兴趣。 @TGrif 我有这个 "extends": ["airbnb", "prettier"] 但我面临同样的问题 【参考方案1】:

其他答案很接近,希望这个答案对完整的答案有所帮助:

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

就是这样

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

但是,另外,如果您想使用 Typescript 等自定义设置制作自己的 .eslintrc.js,请尝试以下操作:

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

希望对您有所帮助。

【讨论】:

【参考方案2】:

将 eslint 包本地安装到您的项目中。

$yarn add eslint --dev

理想情况下,可以通过以下命令生成配置文件 .eslintrc,不幸的是它安装了错误版本的 peerDependencies 导致出现奇怪的 linting 错误。

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

修复 peerDependencies 版本问题的更简单方法,使用下面的命令并安装(我建议你安装与 jsx 相关的包并做出反应,尽管你可能不会做任何与 React 相关的事情)peerDependencies 的相应版本以及 eslint-配置-airbnb

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

使用以下内容编辑 .eslintrc 文件


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

*注意: 请根据您的编码规则、您遵循的环境编辑 eslintrc 文件。参考developer-guide

【讨论】:

为什么我们需要 reactjsx-a11y 插件来为一个既没有 React 也没有使用 JSX 的应用程序?【参考方案3】:

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

【讨论】:

它已经删除了一个错误,但是如何检查 eslint 是否工作。 VS 代码现在没有显示任何错误 进行更改,你知道 ESLint 会抱怨删除分号或添加不带“var”的变量。同时删除 .eslintrc 文件以避免冲突(更新后) 是的。我重启了 请检查您的 package.json 文件中没有错误,例如缺少逗号 @EDISONJ 是的,我认为这对所有 JS 项目都有帮助,因为它有助于执行某种编码标准——这应该会让团队更轻松【参考方案4】:

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();
;

【讨论】:

【参考方案5】:

如果你使用的是atom,vs code...可能编辑器需要全局安装eslint。

npm install -g eslint

【讨论】:

以上是关于如何使用 nodejs express 应用程序配置 eslint的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS+Express+MySQL开发小记:服务器部署

如何使用 Mongoose、Express、Angular 4 和 NodeJS 上传/保存和显示图片

如何使用 nodejs express 应用程序配置 eslint

如何使用socket.io mysql nodejs express删除帖子

NodeJS 不使用 express 返回 JSONP

如何将 Express NodeJS 项目部署到 Centos 服务器?