Bon, par contre, pour les stack traces, il y a encore des progrès à faire. J'ai rencontré un bug sur cozy-desktop, le futur logiciel de synchronisation entre son ordinateur personnel et son cloud personnel. Et je peux vous dire qu'avoir une stack trace qui ne fait référence à aucun fichier du projet, ça n'aide pas à débugger.
Pour reproduire, il suffit de prendre ce bout de code simplifié :
// err.jsconstasync=require('async')constfs=require('fs')conststream=require('stream')letsourceasync.waterfall([(next)=>{conststream=fs.createReadStream('.npmignore')next(null,stream)},(stream,next)=>{source=streamsource.on('error',(err)=>{console.log('Error on source',err)})consttarget=fs.createWriteStream('.npmignore.old')next(null,target)},(target,next)=>{target.on('error',(err)=>{console.log('Error on target',err)})source.pipe(target)target.on('finish',next)}],(err)=>{console.log('Done',err)})
et de le lancer :
$ node -v
v6.1.0
$ npm init
$ npm install async
$ node err.js
Error on source{ Error: ENOENT: no such file or directory, open '.npmignore'
at Error (native) errno: -2, code: 'ENOENT', syscall: 'open', path: '.npmignore'}
Alors, ici, le code paraît bizarre parce que j'ai essayé de reproduire l'exemple de cozy-desktop en le simplifiant beaucoup. Dans cozy-desktop, quand on ajoute un fichier en local qui vient du serveur cozy, on fait d'autres étapes comme s'assurer que le répertoire dans lequel on va écrire le fichier existe. La création du stream source est également plus compliqué : si on a déjà une copie du fichier en local, on va utiliser cette copie, sinon on va passer par le réseau pour récupérer le fichier depuis le serveur. Etc.
# Stack traces...
Posté par Bruno Michel (site web personnel) . En réponse à la dépêche Node.js passe la sixième vitesse. Évalué à 5. Dernière modification le 13 mai 2016 à 11:40.
Bon, par contre, pour les stack traces, il y a encore des progrès à faire. J'ai rencontré un bug sur cozy-desktop, le futur logiciel de synchronisation entre son ordinateur personnel et son cloud personnel. Et je peux vous dire qu'avoir une stack trace qui ne fait référence à aucun fichier du projet, ça n'aide pas à débugger.
Pour reproduire, il suffit de prendre ce bout de code simplifié :
et de le lancer :
Alors, ici, le code paraît bizarre parce que j'ai essayé de reproduire l'exemple de cozy-desktop en le simplifiant beaucoup. Dans cozy-desktop, quand on ajoute un fichier en local qui vient du serveur cozy, on fait d'autres étapes comme s'assurer que le répertoire dans lequel on va écrire le fichier existe. La création du stream
sourceest également plus compliqué : si on a déjà une copie du fichier en local, on va utiliser cette copie, sinon on va passer par le réseau pour récupérer le fichier depuis le serveur. Etc.