tslint说不允许调用console.log-如何允许它?


102

我刚开始使用带有typescript的create-react-app

create-react-app my-app --scripts-version=react-scripts-ts

并且默认的tslint.json配置不允许console.log()。

我如何(暂时)启用console.log?

此文档位于 https://palantir.github.io/tslint/rules/no-console/。但是他们没有说要把这行放在哪里:

    "no-console": [true, "log", "error"]

我搜索并找到了tslint.json配置文件语法,所以我尝试了以下操作:

"rules": {
    "no-console": [true, "warning"]
}

试图获取只是警告的日志消息。但这没有用。

我已经注释掉了我拥有的少量console.log()行,但希望将来能够做到这一点。

Answers:


200

// tslint:disable-next-line:no-console在通话前添加一行,console.log以防止错误消息仅出现一次。

如果要完全禁用该规则,请tslint.json在您的根文件夹中添加以下内容(最有可能在您的根文件夹中):

{
    "rules": {
        "no-console": false
    }
}

6
我不确定发生了什么,但是现在“没有控制台”:false对我不起作用。我发现一种解决方法是将其放在// tslint:disable:no-console文件的顶部。
PatS

10
“ no-console”:false对我有效,但是我必须重新启动“ npm start”才能生效。
jlb

2
"no-console": false即使使用也不适合我npm run start
埃里克·富尔默

18
@EricFulmer将其放在“ jsRules”节点中。“ jsRules”:{“ no-console”:false},
Bill

在错误消失之前,我添加了规则jsRules并重新做了yarn start。不知道是哪一个做到了。
拜伦·沃尔

28

对于那些来到这里的人,他们使用的是javascript和打字稿的混合代码库。

您可能需要在jsRules中定义'no-console'选项,这是javascript文件的jslints规则对象,即,有单独的javascript和typescript规则对象。

//tslint.json

{
  "extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"], //Example... 
  "rules": {
    "no-console": false //Disable for typescript
  },
  "jsRules": {
    "no-console": false //Disable for javascript
  }
}

但是-这件事的目的是什么?
robertotomás19年

jsRules还是没有控制台?
Lee Brindley

无控制台-似乎(我看了一下)它只是在警告您控制台消息不属于生产代码。每当您的环境不
兼容

我在一定程度上理解你的观点。要考虑的一件事是,控制台不是javascript语言的一部分,它通常是在javascript引擎中实现的,尽管如此,这才是关键-它不是javascript语言的一部分,您正在将依赖项烘焙到可能存在或可能不存在的代码中。话虽如此,我可以看到此规则的用途。
Lee Brindley

@robertotomás,此规则基于最佳实践,即代码中没有console.log消息。生产代码中不应包含此代码,因此这可以让您知道尚未准备就绪。您可能有两种tslint配置,一种允许配置,另一种不允许。我有一个logger.info调用的函数console.log(因此是包装器),它使我可以轻松地启用或禁用整个应用程序的日志记录。我并不是说这是最佳做法,只是我所做的事情。它还使与其他记录器(如github.com/krakenjs/beaver-logger)的集成更加容易。
PatS

8

将以下内容添加到您的 tslint.json

{
   "rules": {
      "no-console": {
         "severity": "warning",
      } 
   }
}

6

这是定义无控制台规则(或与此相关的任何其他规则)的正确语法,但仅带有警告而非错误(显然将选项更改为所需的任何内容)

"no-console": {
    "severity": "warning",
    "options": [
        "log",
        "error",
        "debug",
        "info",
        "time",
        "timeEnd",
        "trace"
    ]
},

这完全可以作为警告。顺便说一句,tslint文档中未对此进行记录。
nelson6e65


1

我对tslint“无控制台”规则的处理方式是在开发阶段方便且独立地针对每个文件。

一旦我需要使用第一个console.log(); Visual Studio代码显示添加选项:

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

console.log();

因此,这里我只删除“ -next-line”,此命令将覆盖整个文件。

// tslint:disable:无控制台

console.log();

我希望它可以作为禁用整个应用程序功能的替代方法。

罗恩




0
  {
    "extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"],
    "linterOptions": {
        "exclude": [
            "config/**/*.js",
            "node_modules/**/*.ts",
            "coverage/lcov-report/*.js"
        ]
    },
    "rules": {
        "no-console": false
    },
    "jsRules": {
        "no-console": false
    }
 }

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.