Reactjs tslint说不允许调用console.log-如何允许?
我刚开始使用带有typescript的createreact应用程序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": {
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
}
}