2017-02-13 6 views
0

Ich versuche, die Dateien im Ordner S:/test aufzulisten, der sich in meinem Netzwerk befindet (es ist kein lokales Verzeichnis). Ich habe mich gefragt, wie ich das machen soll? Der Code so sieht weit wie folgt aus:Zugriff auf ein Netzlaufwerk in Nodejs?

const testFolder = 's:/test'; 
 
const fs = require('fs'); 
 
fs.readdir(testFolder, (err, files) => { 
 
    files.forEach(file => { 
 
    console.log(file); 
 
    }); 
 
})

Ich habe versucht, den Weg zum S Wechsel: Test, s: \ test ohne Erfolg, ist der Fehler immer „Kann nicht lesen‚forEach "undefinierter“

+1

bitte die vollständige Adresse des Laufwerks verwenden (s ist nur eine kurze Version eines vollständigen Pfades) ... Dieser Beitrag können Ihnen helfen http://stackoverflow.com/questions/34837954/use-node- js-to-access-a-local-network-Laufwerk – ymz

+0

Sie haben Recht, ich dachte, ich hätte das versucht, aber ich habe mich geirrt. Vielen Dank. – mathExpl

+0

Fangen Sie auch den Fehler zuerst, 'If (err) zurück console.error (err)' oder noch besser verwenden Sie ein Promisified 'fs' – Matt

Antwort

1

Wenn das Fenster (was ich nehme an, es ist), dann müssen Sie ein paar Dinge tun:

  1. den vollständigen Pfad verwenden (Laufwerksbuchstaben sind in Ordnung, aber Sie können auch verwenden UNC-Pfade in Windows) in das gewünschte Verzeichnis.
  2. Lassen Sie alle umgekehrten Schrägstriche in einer Zeichenfolgedefinition mit einem zusätzlichen umgekehrten Schrägstrich zurück.
  3. Verwenden Sie immer Fehlerbehandlung auf Ihrem fs.readdir() Rückruf, so wenn Sie einen Fehler haben, können Sie genau sehen, was der Fehler ist.

Arbeitscode:

const fs = require('fs'); 
const testFolder = 's:\\test'; 

fs.readdir(testFolder, (err, files) => { 
    if (err) return console.log(err); 
    files.forEach(file => { 
    console.log(file); 
    }); 
}); 

Ich habe gerade versucht, diesen Code auf meinem eigenen Festplatte und es funktioniert gut.


Und FYI ziemlich ich viel immer ES6 verwende for/of jetzt in moderner node.js statt .forEach(), weil es viel effizienter für den Interpreter ist und es gibt Ihnen mehr Steuerung (zum Beispiel können Sie verwenden, um break verlasse die Schleife).

const testFolder = 's:\\test'; 
const fs = require('fs'); 

fs.readdir(testFolder, (err, files) => { 
    if (err) return console.log(err); 
    for (let file of files) { 
    console.log(file); 
    } 
}); 
+0

ausgezeichnet, danke für die gründliche Antwort! ist es wirklich effizienter zu verwenden? – mathExpl

Verwandte Themen