javascript - ESLint - 'process' nie je definovaný


Používam ESLinter pre jednoduchý Node projekt. Nižšie je jediný kód, ktorý mám v súbore 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);

Používam editor VSCode. Automaticky spúšťa ESLint pre JS kód.

V IDE vidím nižšie uvedenú chybu pre predposledný riadok -

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

Máš nejakú predstavu, čo je zle?

Odpoveď č. 1

Keď sa mi vyskytla chyba, mal som "browser": true namiesto "node": true.

Toto som opravil nasledujúcou konfiguráciou pre súbor .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
    }
}

Vďaka @FelixKling a @Jaromanda X za rýchle odpovede.

Odpoveď č. 2

Pridanie „node“: „true“ do existujúceho zoznamu prostredí tiež splní úlohu

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

Odpoveď č. 3

Pridajte súbor .eslintrc do koreňa vášho projektu (ak ho ešte nemáte) a definujte globálne premenné, ktoré sa majú ignorovať

{
    "globals": {
        "process": true
      }
}

Uistite sa, že používate process.env po celom projekte, ale iba v jednom konfiguračnom súbore. Zvážte pridanie pravidla no-process-env.

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

Odpoveď č. 4

Ak máte nainštalovaný eslint, pridajte env: { node: true } do súboru .eslintrc.js

Odpoveď č. 5

V novom konfiguračnom súbore ESLint eslint.config.js bola vlastnosť env odstránená, takže by ste mali použiť vlastnosť languageOptions.globals:

import globals from 'globals';

export default [
  {
    languageOptions: {
      globals: {
        ...globals.node,
      }
    }
  }
];

Odpoveď č. 6

Táto konfigurácia mi pomohla a môže pomôcť aj ostatným.

{
  "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"],
  }
}

Súvisiace články