Prüfen, ob writeFileSync die Datei erfolgreich geschrieben hat

Lesezeit: 2 Minuten

Ich habe eine einfache Route mit definiert express.js:

exports.save = function (request, response)
{
    var file = request.body.file;
    var content = request.body.content;

    var saved = false;

    if (fs.existsSync( file ))
    {
        saved = fs.writeFileSync(file, content, 'utf8');
    }

    console.log( saved ); // undefined or false, never true

    response.send(saved ? 200 : 500, saved ? 'saved' : 'error'); // 500, error
};

Ist if (typeof saved === 'undefined') saved = true; die einzige Möglichkeit? Fühlt sich hackig an.

Laut node.js Quellcode fs.writeFileSync gibt nichts zurück.

Es wirft ein Error widersprechen, wenn etwas schief geht. Also solltest du schreiben fs.writeFileSync(file, content, 'utf8'); innerhalb eines try-catch Block.

  • Mein Code wirft keinen Fehler und erstellt auch keine Datei. fs.writeFileSync(__dirname+”./../BusinessNames/currentDB.txt”, ‘nul.vyp’); . Datei wird nicht erstellt, da nul ein reserviertes Schlüsselwort in Windows ist

    – Himanshu

    11. April 2017 um 6:43 Uhr


  • Mein Code erzeugt einen Fehler: undefiniert, aber die Datei wird korrekt erstellt. der Fehler ist völlig überflüssig..

    – Mantikor

    24. Januar 2018 um 11:44 Uhr

fs.writeFileSync gibt keinen Wert zurück, wenn keine Ausnahme auftritt, bedeutet dies, dass das Speichern erfolgreich war; ansonsten fehlgeschlagen.

Vielleicht möchten Sie die asynchrone Version von file read ausprobieren

fs.exists(file, function (exists) {
  if (exists) {
    fs.writeFiles(file, content, 'utf-8', function (err) {
      if (err) {
        response.send("failed to save");
      } else {
        response.send("succeeded in saving");
      }
  } else {
    console.log('file does not exists');
  }
}

  • Die asynchrone Version passt nicht gut zu HTTP-Antworten, deshalb gehe ich den synchronen Weg.

    – Tomsseis

    21. März 2013 um 9:31 Uhr

  • Ich habe die 3. Parameter übersprungen … 🙁

    – Marcello de Sales

    30. September 2014 um 0:16 Uhr

  • @jolt Ich weiß, dass ich zu spät zur Party komme, aber ich sehe nichts Falsches daran, sie mit HTTP-Anfragen zu verwenden. Alles, was Sie tun müssen, ist die andere Operation im „Erfolg“-Callback auszuführen.

    – Jared

    22. August 2016 um 8:06 Uhr

 fs.exists(file, function (exists) {
  if (exists) {
    fs.writeFiles(file, content,  err=> {
      if (err)   res.status(500).send({error: "failed to save"});
       else    res.status(200).send({message : "succeeded in saving"});
  } else {
    res.status(404).send({error: "file not exists"})
  }
}

Verwenden Sie async statt sync. Das wird funktionieren.

1033320cookie-checkPrüfen, ob writeFileSync die Datei erfolgreich geschrieben hat

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy