tslint dice que las llamadas a console.log no están permitidas. ¿Cómo puedo permitir esto?


101

Acabo de comenzar a usar create-react-app con mecanografiado

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

y la configuración tslint.json predeterminada no permite console.log ().

¿Cómo puedo (por ahora) habilitar console.log?

Los documentos para esto se encuentran en https://palantir.github.io/tslint/rules/no-console/ . Pero no dicen dónde poner esta línea:

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

Busqué y encontré esta sintaxis del archivo de configuración tslint.json , así que probé esto:

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

En un intento por obtener mensajes de registro que serían solo advertencias. Pero eso no funcionó.

He comentado las pocas líneas console.log () que tengo, pero querré poder hacer esto en el futuro.

Respuestas:


198

Agregue // tslint:disable-next-line:no-consolela línea justo antes de sus llamadas console.logpara evitar el mensaje de error solo una vez.

Si desea deshabilitar la regla por completo, agregue lo siguiente a su tslint.json(muy probablemente en su carpeta raíz):

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

6
No estoy seguro de lo que sucedió, pero ahora "sin consola": falso no me funciona. He encontrado una solución alternativa para colocarlo // tslint:disable:no-consoleen la parte superior del archivo.
PatS

10
"no-console": false funciona para mí, pero tengo que reiniciar "npm start" para que surta efecto.
jlb

2
"no-console": falseno funciona para mí, incluso con npm run start.
Eric Fulmer

18
@EricFulmer lo puso en el nodo "jsRules". "jsRules": {"no-console": false},
billb

Agregué la regla jsRulese hice una nueva yarn startantes de que desaparecieran los errores. No estoy seguro de cuál de ellos lo hizo.
Byron Wall

27

Para aquellos de ustedes que vienen aquí con una base de código mixta de javascript y mecanografiado.

Es posible que deba definir la opción 'sin consola' en jsRules, objeto de reglas jslints para archivos javascript, es decir, hay objetos de reglas separados para javascript y mecanografiado.

//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
  }
}

pero, ¿cuál es el propósito de esto?
roberto tomás

¿De jsRules o sin consola?
Lee Brindley

no-console: parece (lo busqué) que está ahí solo para advertirte que los mensajes de la consola no pertenecen al código de producción. Eso hace que sea una regla cuestionable cada vez que su env no es prod
roberto tomás

Veo tu punto, hasta cierto punto. Una cosa a considerar es que la consola no es parte del lenguaje javascript, generalmente se implementa en motores javascript, ese es el punto, no es parte del lenguaje javascript, está creando una dependencia en su código que puede o no existir. . Dicho esto, puedo ver un uso para esta regla.
Lee Brindley

@ robertotomás, esta regla se basa en la mejor práctica de no tener mensajes console.log en tu código. El código de producción no debería tener esto, por lo que esto le permite saber que no está listo para la producción. Es posible que tenga dos configuraciones de tslint, una que lo permita y otra que no. Tengo una logger.infofunción que llama console.log(por lo tanto, un contenedor) que me permite habilitar o deshabilitar fácilmente el registro para toda la aplicación. No estoy diciendo que esta sea la mejor práctica, solo algo que he hecho. También facilita la integración con otro registrador como github.com/krakenjs/beaver-logger .
PatS

8

Agregue lo siguiente a su tslint.json

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

6

Esta es la sintaxis correcta para definir la regla sin consola (o cualquier otra regla para el caso) pero solo con una advertencia en lugar de un error (obviamente, cambie las opciones a lo que desee)

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

Esto funciona perfectamente como advertencia. Por cierto, esto no está documentado en la documentación de tslint.
nelson6e65

1

en la versión 3 de typeScript, actualice tslint.json bajo la regla clave como se muestra a continuación:

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

de esta manera usted simplemente especifica debug, time, timeEnd, trace para no ser usado, si en su tslint predeterminado "info" está en la lista, simplemente elimínelo.


1
Esta es la forma en que debe hacerse como se indica en los documentos palantir.github.io/tslint/rules/no-console
Christopher Grigg

1

La forma en que manejo la regla tslint "no-console" es por archivo que he encontrado es conveniente y aislado en la fase de desarrollo.

Tan pronto como necesite usar el primer console.log (); Visual Studio Code muestra la opción de agregar:

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

console.log ();

Así que aquí simplemente elimino "-next-line" y este comando cubrirá todo el archivo.

// tslint: disable: no-console

console.log ();

Espero que, como alternativa, ayude a desactivar la función para toda la aplicación.

RON



0

si // tslint:disable-next-line:no-consoleno funciona intenta con// eslint:disable-next-line:no-console


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

ingrese la descripción de la imagen aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.