46 votes

Comment détecter par programme le mode de débogage dans nodejs ?

J'ai vu cette question posée sur d'autres plates-formes/langues - des idées ? J'aimerais faire quelque chose comme :

 if (detectDebug())
{
    require('tty').setRawMode(true);    
    var stdin = process.openStdin();

    stdin.on('keypress', function (chunk, key) {
        DoWork();
    }
}
else
{
    DoWork();
}

J'aimerais pouvoir basculer la saisie au clavier comme début pour le script lors du débogage afin que je puisse avoir un moment pour lancer Chrome pour écouter mon port d'inspecteur de nœud.

***Mise à jour rapide - Je suppose que je peux utiliser "process.argv" pour détecter si --debug a été transmis. Est-ce la meilleure/bonne manière ?

51voto

Gabriel Petrovay Points 2624

NodeJS crée un v8debug lors de l'exécution en mode débogage : node debug script.js

Une solution possible serait donc :

 var debug = typeof v8debug === 'object';

Pour mon cas d'utilisation, je l'utilise car je veux éviter de passer des variables d'environnement. Mon processus de nœud principal démarre les processus de nœud enfant et je veux qu'un node debug mainScript.js déclenche également le mode de débogage pour les enfants (encore une fois, sans transmettre de variables d'environnement aux processus enfants)

28voto

bentael Points 409

j'utilise ça

 var debug = typeof v8debug === 'object' 
            || /--debug|--inspect/.test(process.execArgv.join(' '));

qui prend en charge, --debug , --debug-brk , --inspect et --inspect=1234

18voto

Lellansin Points 674

Il existe un support natif de node.js qui utilise inspector.url() pour vérifier s'il y a un inspecteur actif, il montre simplement si le processus est en mode débogage ou pas actuellement. Voir la doc pour en savoir plus.

6voto

Ernesto Badillo Points 749
var detectDebug = function() {
    return process.env.NODE_ENV !== 'production';
};

pour exécuter en mode débogage :

 $ node app.js

pour fonctionner en mode production :

 $ NODE_ENV=production node app.js

Certains frameworks reconnaissent ainsi le mode de production. Voir la doc express.js .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X