Bonjour, j'utilise actuellement node webkit et la fonction d'enregistrement de node js.

Je voudrais faire une animation prendant enregistrement et je tente de détecté la fin de enregistrement en vérifiant si il y a eu une erreur de cette façon:

fs.writeFile
(
    chemin + '/Desenfumage/xml/' + nom_client + '.xml',
    xml,
    'utf8',
    function (err)
    {
        console.log(err);
        if(err)
        {
            console.log("failed to save");
        }
        else
        {
            console.log("succeeded in saving");
        }
    }
);

Mon problème est qu'il enregistre mais je n'ai pas de retour. Je vois pas pourquoi, si vous avez déjà eu le cas. J'aimerais bien avoir vos lumière

Merci

10 réponses


Sur le papier le code est bon quand la sauvegarde se fait les logs donnent quoi ? Il t'affiche un truc dans le terminal ?

Justement non rien ne s'affcihce dans la concole

Salut,

Je te conseil d'utilisé la méthode suivante et aussi au lieu de faire une concaténation avec + utilise path.join, pour généré correctement le chemin des fichiers afin d'évité les problèmes d'un système d'exploitation à l'autre .

Il faut que tu vérifie que les dossiers sois bien créer pour que tu puisse sauvegardé ton fichier

if (!fs.existsSync(chemin)) {
    fs.mkdirSync(chemin, function(err) {
        console.log(err);
    });
}
var filename = nom_client + '.xml';
var savePath = path.join(chemin, 'Desenfumage', 'xml', filename);
var content = 'hello';
if (!fs.existsSync(savePath)) {
    fs.writeFileSync(savePath, content);
}

Ok mais sa ne me permet pas de faire mon annimation pendant la sauvegarde tous sa ?
J'ai pas de problème d'enregistrement, sa marche de ce côté

Salut,

N'y aurait-il pas un problème de permissions par hasard ?

Comment on fait pour savoir si il y a des permissions ?

Salut,

Si j'ai bien compris la création du fichier fonctionne bien, mais tu veux savoir exactement quand c'est terminé ? Si tu n'as pas de retour d'erreur c'est que ça c'est bien passé. Mais pour pour plus de précisions tu peux utiliser writeStream qui te permettra d'écouter des événements comme "on('finish')", "on('error')" , ...

Si le fichier ne s'enregistre pas bien regarde si tu peux enregistrer dans le répertoire dans lequel tu te trouve, en général rencontrer sous Linux : chmod.

je me sert de node webkit dans mon cas.

Tu as décrit ce que je souhaite faire et je confirme que mon fichier est bien enregistré et correcte.

Par conte la fonction writestream je comprend pas bien comme elle marche

@stephcache le writestream te permet d'ouvrir un stream en écriture vers un fichier ;)
Après sois tu utilises les promises, soit les callbacks, tu devrais aller voir du côté de la doc.

Regarde ce tuto qui t'explique le principe des streams : http://www.sitepoint.com/basics-node-js-streams/
;)