Question JavaScript: comment imprimer un message sur la console d'erreur?


Comment puis-je imprimer un message sur la console d’erreur, de préférence avec une variable?

Par exemple, quelque chose comme:

print('x=%d', x);

415
2017-10-02 20:23


origine


Réponses:


Installer Pyromane et alors vous pouvez utiliser console.log(...) et console.debug(...), etc. (voir La documentation pour plus).


447
2017-10-02 20:26



console.error(message); //gives you the red errormessage
console.log(message); //gives the default message
console.warn(message); //gives the warn message with the exclamation mark in front of it
console.info(message); //gives an info message with an 'i' in front of the message

Vous pouvez également ajouter du CSS à vos messages de journalisation:

console.log('%c My message here', "background: blue; color: black; padding-left:10px;");

287
2017-09-20 16:07



Les exceptions sont consignées dans la console JavaScript. Vous pouvez l'utiliser si vous voulez garder Pyromane désactivée.

function log(msg) {
    setTimeout(function() {
        throw new Error(msg);
    }, 0);
}

Usage:

log('Hello World');
log('another message');

83
2018-06-17 09:08



Une bonne façon de faire cela, qui fonctionne sur plusieurs navigateurs, est décrite dans Déboguer JavaScript: Jetez vos alertes!.


55
2017-10-03 10:00



Si tu utilises Safari, tu peux écrire

console.log("your message here");

et il apparaît directement sur la console du navigateur.


15
2018-03-12 09:17



Voici une solution à la question littérale de l'impression d'un message sur la console d'erreur du navigateur, et non sur la console du débogueur. (Il peut y avoir de bonnes raisons de contourner le débogueur.)

Comme je l'ai noté dans les commentaires sur la suggestion de lancer une erreur pour obtenir un message dans la console d'erreur, un problème est que cela va interrompre le thread d'exécution. Si vous ne voulez pas interrompre le thread, vous pouvez lancer l'erreur dans un thread séparé, créé avec setTimeout. D'où ma solution (qui se révèle être une élaboration de celle d'Ivo Danihelka):

var startTime = (new Date()).getTime();
function logError(msg)
{
  var milliseconds = (new Date()).getTime() - startTime;
  window.setTimeout(function () {
    throw( new Error(milliseconds + ': ' + msg, "") );
  });
}
logError('testing');

J'inclus le temps en millisecondes depuis l'heure de début, car le délai d'attente peut fausser l'ordre dans lequel vous pouvez vous attendre à voir les messages.

Le second argument de la méthode Error concerne le nom de fichier, qui est une chaîne vide ici pour empêcher la sortie du nom de fichier et du nom de ligne inutiles. Il est possible d'obtenir la fonction d'appelant, mais pas de manière indépendante.

Ce serait bien si nous pouvions afficher le message avec une icône d'avertissement ou de message au lieu de l'icône d'erreur, mais je ne peux pas trouver un moyen de le faire.

Un autre problème avec l'utilisation de throw est qu'il peut être attrapé et jeté par un try-catch englobant, et mettre le throw dans un thread séparé évite également cet obstacle. Cependant, l'erreur peut encore être interceptée si le gestionnaire window.onerror est remplacé par un autre qui fait quelque chose de différent. Je ne peux pas vous aider là-bas.


14
2018-01-27 23:39



Pour répondre réellement à la question:

console.error('An error occurred!');
console.error('An error occurred! ', 'My variable = ', myVar);
console.error('An error occurred! ' + 'My variable = ' + myVar);

Au lieu d'erreur, vous pouvez également utiliser info, log ou warn.


9
2018-03-26 13:54