我刚开始使用带有 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 configuration file syntax,所以我尝试了这个:
"rules": {
"no-console": [true, "warning"]
}
试图获取只是警告的日志消息。但这没有用。
我已经注释掉了我拥有的几行 console.log() 行,但我希望将来能够做到这一点。
在调用 console.log
之前的行中添加 // tslint:disable-next-line:no-console
以防止错误消息仅出现一次。
如果您想完全禁用该规则,请将以下内容添加到您的 tslint.json
(很可能在您的根文件夹中):
{
"rules": {
"no-console": false
}
}
对于那些带着 javascript 和 typescript 的混合代码库来到这里的人。
您可能需要在 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
}
}
console.log
的 logger.info
函数(因此是一个包装器),它允许我轻松启用或禁用整个应用程序的日志记录。我并不是说这是最佳实践,只是我已经做过的事情。它还可以更轻松地与 github.com/krakenjs/beaver-logger 等其他记录器集成。
将以下内容添加到您的 tslint.json
{
"rules": {
"no-console": {
"severity": "warning",
}
}
}
这是定义无控制台规则(或任何其他规则)的正确语法,但仅带有警告而不是错误(显然将选项更改为您想要的任何内容)
"no-console": {
"severity": "warning",
"options": [
"log",
"error",
"debug",
"info",
"time",
"timeEnd",
"trace"
]
},
我处理 tslint “no-console” 规则的方式是每个文件,我发现在开发阶段很方便和隔离。
只要我需要使用第一个 console.log(); Visual Studio Code 显示添加选项:
// tslint:disable-next-line: no-console console.log();
所以在这里我只是删除“-next-line”,这个命令将覆盖整个文件。
// tslint:disable: no-console console.log();
我希望它有助于替代禁用整个应用程序的功能。
罗恩
如果 // tslint:disable-next-line:no-console
不起作用,请尝试使用 // eslint:disable-next-line:no-console
在 typeScript 版本 3 中,在关键规则下更新 tslint.json,如下所示:
"no-console": [
true,
"debug",
"time",
"timeEnd",
"trace"
],
这样,您只需指定不使用的调试、时间、时间结束、跟踪,如果在您的默认 tslint 中“信息”在列表中,只需将其删除。
只是绕过 linter 的肮脏技巧:
const { log } = console; log('Hello linter'); // TODO: remove
根据文档:https://eslint.org/docs/user-guide/getting-started#configuration
"off" 或 0 - 关闭规则
"warn" 或 1 - 将规则作为警告打开(不影响退出代码)
“错误”或 2 - 将规则作为错误打开(退出代码将为 1)
顺便说一句,您的正确设置是
{
"rules": {
"no-console": false
}
}
{
"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
}
}
https://i.stack.imgur.com/ltn8M.png
语法变了!
对于下一行异常,在 no-console 之前需要有一个空格:// eslint-disable-next-line no-console
。
对于文件异常,它还必须在多行注释语法中:/* eslint-disable no-console */
。
它也可能取决于某些配置。
对于那些来这里寻找一种方法来保持 console.log
不被允许,但允许像 console.time
和 console.timeEnd
这样有用的方法的人,例如,您可以在 .eslintrc 规则中全局显式定义它:
"no-console": ["error", {"allow": ["time", "timeEnd", "trace"]}],
// tslint:disable:no-console
放在文件顶部。"no-console": false
对我不起作用,即使使用npm run start
。console.log('hello world'); // tslint:disable-line:no-console