如何使用 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
【讨论】:
为什么我们需要react
和 jsx-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