2016-09-20 9 views
1

Ich bin derzeit auf der Suche nach ein paar Dateien in einem bestimmten Ordner unter Windows mit node und grunt.Durchsuchen von Dateien mit Node.js

Ich habe eine grunt task, die eine Funktion ein Verzeichnis mit JSON-Dateien zu lesen, aber das Problem ist, dass, wenn ich die Aufgabe ausführen, der Code die Datei zu lesen, nicht alles tun, alles andere an diesem grunt task läuft perfekt , aber das. Ich bin nicht sicher, ob die Referenz für den Pfad korrekt ist, aber ich verwende auch path.normalize() und es wirft keinen Fehler.

Dies ist Schnipsel des Codes:

..// Some other code 
var fs = require('fs'), 
path = require("path"); 

grunt.registerTask('separate', function() { 
var filePath = path.normalize("C:\Users\jbernhardt\Desktop\testkeeper\jenkinsReports"); 

fs.readdir(filePath, function(err, filenames) { 

    //This log doesn't show as it the function is not running 
    grunt.log.writeln("Testing"); 

    if (err) { 
     grunt.log.writeln("Error"); 
     return; 
    } 
    filenames.forEach(function(filename){ 
     grunt.log.writeln("Testing"); 

    }); 

    }); 
...//Some more code below for the same task 
} 

Hat jemand eine Idee hat, warum dieser Ausschnitt des Codes übersprungen wird, wenn ich die Aufgabe ausführen? Ich könnte wahrscheinlich ein paar Grundstoffe vermissen. Vielen Dank!

+0

Ihre Forward Slashes entkommen Ihren Pfadnamen –

+0

Verwenden Sie "C: \\ Benutzer \\ ..." oder "C:/Users /" – Draykos

Antwort

2

Versuchen Sie readdirSync und überprüfen Sie, ob Ihre Funktion immer noch nicht funktioniert. Ich schätze, Ihr Prozess ist vor dem Rückruf beendet.

+0

Scheint, dass Sie richtig sind, habe ich versucht, und seine Arbeit !, I ' Sehen Sie nach einer Alternative zum Lesen von Async für Best Practice. –

0

müssen Sie Ihren Weg ändern

var filePath = path.normalize("C:\\Users\\jbernhardt\\Desktop\\testkeeper\\jenkinsReports"); 

Auch konsistente Ergebnisse zu erzielen, wenn sie mit Windows-Dateipfaden auf jedem Betriebssystem arbeiten, verwenden path.win32:

path.win32.basename('C:\\Users\\jbernhardt\\Desktop\\testkeeper\\jenkinsReports"'); 

Sie über lesen https://nodejs.org/api/path.html#path_windows_vs_posix

0

Der Schrägstrich im Pfad wird maskiert.

"C:\\Users\\jbernhardt\\Desktop\\testkeeper\\jenkinsReports" 

sollte Ihr Problem lösen.

1

Sie können einfach verwenden, um die __dirname Objekt den Pfad zu gelangen, wo das aktuelle Skript ausgeführt wird:

..// Some other code 
var fs = require('fs'), 
path = require("path"); 

grunt.registerTask('separate', function() { 

fs.readdir(__dirname, function(err, filenames) { 

    //This log doesn't show as it the function is not running 
    grunt.log.writeln("Testing"); 

    if (err) { 
     grunt.log.writeln("Error"); 
     return; 
    } 
    filenames.forEach(function(filename){ 
     grunt.log.writeln("Testing"); 

    }); 

    }); 
...//Some more code below for the same task 
} 

Sie können weitere Informationen finden here.

Verwandte Themen