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

Reactjs tslint说不允许调用console.log-如何允许?,reactjs,typescript,create-react-app,tslint,Reactjs,Typescript,Create React App,Tslint,我刚开始使用带有typescript的createreact应用程序 create-react-app my-app --scripts-version=react-scripts-ts 默认的tslint.json配置不允许console.log() 如何(目前)启用console.log? 这方面的文档位于。但他们没有说这条线应该放在哪里: "no-console": [true, "log", "error"] 我搜索并找到了这个,所以我尝试了这个: "rules": {

我刚开始使用带有typescript的createreact应用程序

create-react-app my-app --scripts-version=react-scripts-ts
默认的tslint.json配置不允许console.log()

如何(目前)启用console.log?

这方面的文档位于。但他们没有说这条线应该放在哪里:

    "no-console": [true, "log", "error"]
我搜索并找到了这个,所以我尝试了这个:

"rules": {
    "no-console": [true, "warning"]
}
试图获取只是警告的日志消息。 但那没用


我已经注释掉了我仅有的几个console.log()行,但我希望将来能够这样做。

添加
//tslint:disable next line:no console
在调用
console.log
之前的行中,以防止错误消息只出现一次

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

根据文件:

  • “关闭”或0-关闭规则
  • “警告”或1-将规则作为警告打开(不影响退出代码)
  • “错误”或2-将规则作为错误打开(退出代码为1)
顺便说一下,您的正确设置是

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

对于那些带着javascript和typescript混合代码库来到这里的人。

您可能需要在jsRules中定义“no console”选项,jslints rules对象用于javascript文件,即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
  }
}

将以下内容添加到
tslint.json

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

这是定义no-console规则(或任何其他相关规则)的正确语法,但只包含警告而不是错误(显然可以根据需要更改选项)


在typeScript版本3中,按照如下关键规则更新tslint.json:

"no-console": [
    true,
    "debug",
    "time",
    "timeEnd",
    "trace"
],

通过这种方式,您只需指定不使用的调试、时间、时间结束、跟踪,如果默认tslint“info”在列表中,只需将其删除。

如果
//tslint:disable next line:no console
不起作用请尝试
//eslint:disable next line:no console

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

我处理tslint“无控制台”规则的方式是每个文件,我发现这些文件在开发阶段是方便且孤立的

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

//tslint:禁用下一行:无控制台

console.log()

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

//tslint:禁用:无控制台

console.log()

我希望它能帮助你为整个应用程序禁用该功能


RON

我不确定发生了什么,但现在“没有控制台”:false对我不起作用。我发现一个解决办法是将
//tslint:disable:no console
放在文件的顶部。“no console”:false对我有效,但我必须重新启动“npm start”才能生效。
“no console”:false
对我无效,即使使用
npm run start
@EricFulmer将其放在“jsRules”节点中。“jsRules”:{“no console”:false},在错误消失之前,我将规则添加到
jsRules
,并重新开始了
纱线。不确定是哪一个做的。但是--这件事的目的是什么?是jsRules,还是没有控制台?没有控制台--看起来(我查了一下)它只是为了警告您控制台消息不属于生产代码。这使得它成为一个有问题的规则,任何时候你的环境不是普罗迪明白你的观点,在一定程度上。有一点需要考虑的是,控制台不是JavaScript语言的一部分,它通常是在JavaScript引擎中实现的,这是关键点——它不是JavaScript语言的一部分,而是在代码中烘焙一个依赖关系,这些依赖关系可能存在或不存在。话虽如此,我可以看出这条规则的用处。@robertotomás,这条规则基于代码中不包含console.log消息的最佳实践。生产代码不应该有这个,所以这让您知道您的产品还没有准备好。您可能有两个tslint配置,一个允许,另一个不允许。我有一个
logger.info
函数,可以调用
console.log
(所以是一个包装器),它允许我轻松地启用或禁用整个应用程序的日志记录。我不是说这是最佳实践,只是我做过的一些事情。它还使它更容易与另一个类似的记录器集成。这非常适合作为警告。顺便说一句,tslint文档中没有记录这一点。这是文档中所述的方式
"no-console": [
    true,
    "debug",
    "time",
    "timeEnd",
    "trace"
],
  {
    "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
    }
 }