Eslint: วิธีการปิดการใช้งาน "คำสั่งคอนโซลที่ไม่คาดคิด" ใน Node.js?


268

ฉันใช้ eslint กับ Sublime ข้อความที่ 3 gulpfile.jsและที่ผมเขียน

/*eslint-env node*/
var gulp = require('gulp');

gulp.task('default', function(){
    console.log('default task');
});

แต่ eslint ยังคงแสดงข้อผิดพลาด: "ข้อผิดพลาด: คำสั่งคอนโซลที่ไม่คาดคิด (ไม่มีคอนโซล)" ข้อผิดพลาด eslint

ฉันพบเอกสารอย่างเป็นทางการที่นี่แต่ฉันยังไม่รู้วิธีปิดใช้งาน

/*eslint-env node*/
var gulp = require('gulp');

/*eslint no-console: 2*/
gulp.task('default', function(){
    console.log('default task');
});

ไม่ทำงานเช่นกัน

ปลั๊กอิน Sublime Text 3 ของฉัน: SublimeLinter และ SublimeLinter-contrib-eslint

นี่คือ.eslintrc.jsไฟล์ของฉัน:

module.exports = {
    "rules": {
        "no-console":0,
        "indent": [
            2,
            "tab"
        ],
        "quotes": [
            2,
            "single"
        ],
        "linebreak-style": [
            2,
            "unix"
        ],
        "semi": [
            2,
            "always"
        ]
    },
    "env": {
        "browser": true,
        "node": true
    },
    "extends": "eslint:recommended"
};

คำตอบ:


451

สร้าง. eslintrc.js ในไดเรกทอรีของไฟล์ของคุณและใส่เนื้อหาต่อไปนี้ลงไป:

module.exports = {
    rules: {
        'no-console': 'off',
    },
};

2
ดีตามหน้า github อย่างเป็นทางการสำหรับปลั๊กอิน eslint ( github.com/roadhump/ ...... ) วางไฟล์. eslintrc ลงในโฟลเดอร์โครงการของคุณควรทำเคล็ดลับ ... เพื่อทำการดีบักต่อไปฉันขอแนะนำให้พยายามเรียกใช้ eslint จากบรรทัดคำสั่ง เพียงติดตั้ง node.js หากคุณไม่ได้ติดตั้งไว้จากนั้นรันnpm install eslintจากพร้อมต์คอนโซล / คำสั่งจากนั้นไปที่โฟลเดอร์โปรเจ็กต์ของคุณในพร้อมต์คอนโซล / คำสั่งและรันeslint .
markasoftware

10
มันใช้งานได้ (สำหรับฉัน) เมื่อไฟล์ถูกเรียกว่า. eslintrc.json
AlexWien

13
หรือคุณสามารถเขียน"rules": {"no-console": "off"}ให้เป็นความลับน้อยลง "warn"และ"error"เป็นอีก 2 ตัวเลือก
TheDarkIn1978

1
แฟ้มการกำหนดค่า ESLint เคยเป็นเพียง.eslintrcแต่ตอนนี้ที่จะเลิกและควรได้รับการตั้งชื่อตามรูปแบบที่ใช้เช่น.eslintrc.js, .eslintrc.yamlฯลฯ
โคลินเบนเน็ตต์ D

4
ไม่ทำงานในvue-cli 3 : ดูคำตอบstackoverflow.com/a/53333105/150370
German Latorre

141

คุณควรอัปเดตไฟล์ eslint เพื่อแก้ไขปัญหานี้อย่างถาวร มิฉะนั้นคุณสามารถเปิดใช้งานหรือปิดใช้งานการตรวจสอบ eslint ชั่วคราวสำหรับคอนโซลเช่นด้านล่าง

/* eslint-disable no-console */
console.log(someThing);
/* eslint-enable no-console */

2
วิธีกำหนดค่าของฉัน.eslintrcโปรดบอกฉันที
Jean YC Yang

7
ไม่จำเป็นต้องเพิ่มทั้งสองบรรทัด มีเพียงใส่ก่อนหน้าของคุณยกเว้นต่อไปนี้เป็นพอ:console.log eslint-disable-next-line no-console
Jonathan Brizio

132

สำหรับvue-CLI 3เปิดpackage.jsonและตามมาตราeslintConfigใส่no-consoleภายใต้rulesและรีสตาร์ทเซิร์ฟเวอร์ dev ( npm run serveหรือyarn serve)

...
"eslintConfig": {
    ...
    "rules": {
      "no-console": "off"
    },
    ...

2
ขอบคุณเนื่องจากโซลูชัน @markasoftware ไม่สามารถทำงานได้ถ้าคุณมาที่นี่สำหรับโครงการ cue-cli
Muenalan

package.json ไม่ใช่วิธีเดียวที่จะทำสิ่งนี้ ไฟล์กำหนดค่าแยกต่างหากยังเป็นมาตรฐาน
Michael Cole

1
ขอบคุณ! คุณบันทึกวันของฉัน
Ank

ขอบคุณ! กฎในเอกสาร: การกำหนดค่าeslint.org/docs/user-guide/configuring#configuring-rules , กฎ: eslint.org/docs/rules
เดนิส

1
หนึ่งในโฟลเดอร์รูท @MaxRocket
GiorgosK

35

ตัวเลือกที่ดีกว่าคือการแสดงงบ console.log และดีบักเกอร์ตามเงื่อนไขโดยขึ้นอยู่กับสภาพแวดล้อมของโหนด

  rules: {
    // allow console and debugger in development
    'no-console': process.env.NODE_ENV === 'production' ? 2 : 0,
    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
  },

msgs ของคอนโซลยังคงพิมพ์ในสภาพแวดล้อมการผลิต
Sanyam Jain

19

การทำงานต่อไปนี้ทำงานกับ ESLint ใน VSCode หากคุณต้องการปิดการใช้งานกฎเพียงหนึ่งบรรทัด

หากต้องการปิดการใช้งานบรรทัดถัดไป:

// eslint-disable-next-line no-console
console.log('hello world');

หากต้องการปิดการใช้งานบรรทัดปัจจุบัน:

console.log('hello world'); // eslint-disable-line no-console

15

หากคุณติดตั้ง eslint ภายใต้โครงการท้องถิ่นของคุณคุณควรมีไดเรกทอรี / node_modules / eslint / conf / และภายใต้ไดเรกทอรีนั้นเป็นไฟล์ eslint.json คุณสามารถแก้ไขไฟล์และแก้ไขรายการ "no-console" ด้วยค่า "off" (แม้ว่าจะรองรับค่า 0 เช่นกัน):

"rules": {
    "no-alert": "off",
    "no-array-constructor": "off",
    "no-bitwise": "off",
    "no-caller": "off",
    "no-case-declarations": "error",
    "no-catch-shadow": "off",
    "no-class-assign": "error",
    "no-cond-assign": "error",
    "no-confusing-arrow": "off",
    "no-console": "off",
    ....

ฉันหวังว่า "การกำหนดค่า" นี้จะช่วยคุณได้


ยิ่งไปกว่านั้นเพียงเรียกใช้สคริปต์ที่มีประโยชน์นี้กับไฟล์ทั้งหมดของคุณ:find . -name '*.js' -exec gawk -i inplace 'NR==1{print "/* eslint-disable */"} {print}' {} \;
user234461

กฎในเอกสาร: การกำหนดค่าeslint.org/docs/user-guide/configuring#configuring-rules , กฎ: eslint.org/docs/rules
เดนิส

10

ฉันใช้ Ember.js .eslintrc.jsซึ่งจะสร้างไฟล์ชื่อ การเพิ่ม"no-console": 0ไปยังวัตถุกฎทำงานให้ฉันได้ ไฟล์ที่อัปเดตมีลักษณะดังนี้:

module.exports = {
  root: true,
  parserOptions: {
    ecmaVersion: 6,
    sourceType: 'module'
  },
  extends: 'eslint:recommended',
  env: {
    browser: true
  },
  rules: {
    "no-console": 0
  }
};

10

หากคุณเพียงแค่ต้องการที่จะปิดการใช้งานกฎครั้งคุณต้องการที่จะดูที่คำตอบข้อยกเว้นของ

คุณสามารถปรับปรุงได้โดยการปิดใช้งานกฎสำหรับหนึ่งบรรทัดเท่านั้น:

... ในบรรทัดปัจจุบัน:

console.log(someThing); /* eslint-disable-line no-console */

... หรือในบรรทัดถัดไป:

/* eslint-disable-next-line no-console */
console.log(someThing);

9

ในvueโครงการของฉันฉันแก้ไขปัญหานี้เช่นนี้:

vim package.json
...
"rules": {
    "no-console": "off"
},
...

ps : package.json is a configfile in the vue project dir, finally the content shown like this:

{
  "name": "metadata-front",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "axios": "^0.18.0",
    "vue": "^2.5.17",
    "vue-router": "^3.0.2"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "^3.0.4",
    "@vue/cli-plugin-eslint": "^3.0.4",
    "@vue/cli-service": "^3.0.4",
    "babel-eslint": "^10.0.1",
    "eslint": "^5.8.0",
    "eslint-plugin-vue": "^5.0.0-0",
    "vue-template-compiler": "^2.5.17"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/essential",
      "eslint:recommended"
    ],
    "rules": {
        "no-console": "off"
    },
    "parserOptions": {
      "parser": "babel-eslint"
    }
  },
  "postcss": {
    "plugins": {
      "autoprefixer": {}
    }
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ]
}

นี้จะมีประโยชน์ถ้าใครสร้างรางโครงการ Vue vue-cliหรือvue uiและมันมีและvue.config.js แก้ไขpackage.json package.json
swiesend

6

หากคุณยังคงมีปัญหาแม้หลังจากกำหนดค่า package.json ของคุณตามเอกสาร (ถ้าคุณเลือกที่จะใช้ package.json เพื่อติดตามมากกว่าไฟล์ config แยกต่างหาก):

"rules": {
      "no-console": "off"
    },

และก็ยังไม่ได้ทำงานให้คุณอย่าลืมว่าคุณต้องกลับไปที่บรรทัดคำสั่งและทำ NPM ติดตั้งอีกครั้ง :)


5

ในpackage.jsonคุณจะพบeslintConfigบรรทัด บรรทัด 'กฎ' ของคุณสามารถเข้าไปที่นั่นเช่นนี้:

  "eslintConfig": {
   ...
    "extends": [
      "eslint:recommended"
    ],
    "rules": {
      "no-console": "off"
    },
   ...
  },

4

คุณควรเพิ่มหนึ่งกฎและเพิ่ม env ของคุณ:

{
  "rules": {
    "no-console": "off"
  },
  "env": {
    "browser": true
  }
}

คุณสามารถเพิ่ม envs อื่น ๆ


4

วางสิ่งนี้ลงในไฟล์. eslintrc.js ที่อยู่ในตำแหน่งโปรเจ็กต์ที่เหมาะกับฉัน

module.exports = {
    rules: {
        'no-console': 0
    }
};

3

2561 ตุลาคม

แค่ทำ:

// tslint:disable-next-line:no-console

อีกคนตอบด้วย

// eslint-disable-next-line no-console

ไม่ทำงาน, ไม่เป็นผล !


0

หรือแทนที่จะปิด 'no-console' คุณสามารถอนุญาตได้ ในไฟล์. eslintrc.js

  rules: {
    'no-console': [
      'warn',
      { allow: ['clear', 'info', 'error', 'dir', 'trace', 'log'] }
    ]
  }

สิ่งนี้จะช่วยให้คุณทำconsole.logและconsole.clearอื่น ๆ ได้โดยไม่ผิดพลาด


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.