ESLint - 未定义“进程”

Posted

技术标签:

【中文标题】ESLint - 未定义“进程”【英文标题】:ESLint - 'process' is not defined 【发布时间】:2018-11-26 09:16:48 【问题描述】:

我将 ESLinter 用于一个简单的节点项目。以下是我在 index.js 中的唯一代码:

const express = require('express');
const app = express();

app.get('/', (req, res) => 
    res.send(
        hi: 'there'
    );
);

const PORT = process.env.PORT || 5000;
app.listen(PORT);

我正在使用VSCode 编辑器。它会自动为 JS 代码运行 ESLint。

在 IDE 中,我看到最后一行出现以下错误 -

[eslint] 'process' is not defined. (no-undef)

有什么问题吗?

【问题讨论】:

ESLINT 是否有某种方式通知它您正在检查 nodejs 代码? 你可能没有正确配置 eslint。 eslint.org/docs/user-guide/configuring#specifying-environments 谢谢@FelixKling - 我不去查看 .eslintrc.json 文件真是太愚蠢了。我不小心选择了browser default global variables。您的链接向我暗示了这一点。现在,错误消失了! 【参考方案1】:

感谢@FelixKling 和@Jaromanda X 的快速回复。

我已通过 .eslintrc.json 文件的以下配置修复了此问题-


    "env": 
        "node": true,
        "commonjs": true
    ,
    "extends": "eslint:recommended",
    "rules": 
        "indent": [
            "error",
            "tab"
        ],
        "linebreak-style": [
            "error",
            "unix"
        ],
        "quotes": [
            "error",
            "single"
        ],
        "semi": [
            "error",
            "always"
        ]
    ,
    "parserOptions": 
        "ecmaVersion": 2015
    

当我遇到错误时,我得到的是 "browser": true 而不是 "node": true。简单的错误。

【讨论】:

这摆脱了我的 ESlint 'URL' 也没有定义。【参考方案2】:

将“node”:“true”添加到现有的环境列表中也可以完成这项工作

"env": 
        "node": true,
        "commonjs": true,
        "browser": true,
        "es6": true
       

【讨论】:

【参考方案3】:

将 .eslintrc 文件添加到项目的根目录(如果您还没有)并定义要忽略的全局变量


    "globals": 
        "process": true
      

确保您在项目中使用 process.env,但仅在单个配置文件中使用。考虑添加no-process-envrule。

https://eslint.org/docs/rules/no-process-env

【讨论】:

【参考方案4】:

如果你安装了 eslint,请将env: node: true 添加到 .eslintrc.js 文件中

【讨论】:

【参考方案5】:

这个配置帮助了我,也可以帮助其他人


  "parser": "babel-eslint",
  "parserOptions": 
    "ecmaFeatures": 
      "jsx": true,
      "modules": true
    ,
    "ecmaVersion": 2020,
    "sourceType": "module",
    "useJSXTextNode": true,
    "warnOnUnsupportedTypeScriptVersion": false
  ,
  "root": true,
  "env": 
    "browser": true,
    "es6": true,
    "node": true,
    "commonjs": true
  ,
  "extends": [ "eslint:recommended"],
  ,

【讨论】:

【参考方案6】:

在处理节点 js 项目时。这可能会帮助你。它对我有用

module.exports = 
"env": 
    "node": true,
    "browser": true,
    "commonjs": true,
    "es6": true
,
"extends": "eslint:recommended",
"globals": 
    "Atomics": "readonly",
    "SharedArrayBuffer": "readonly"
,
"parserOptions": 
    "ecmaVersion": 2018
,
"rules": 

;

【讨论】:

【参考方案7】:

解决此问题的另一种方法是简单地import process from "process"

尽管这不是绝对必要的,但无论如何人们都可以争辩说这是更好的做法。

【讨论】:

以上是关于ESLint - 未定义“进程”的主要内容,如果未能解决你的问题,请参考以下文章

ESLint 美元($)未定义。 (无非定义)

eslint 为啥我的插件显示未找到规则定义?

未找到规则“导入/扩展”的 ESLint 定义

ESLint 未定义/被赋值但未使用

Jest / ESLint 失败未定义

ESLint:未定义“cy”(赛普拉斯)