2016-09-20 58 views
1

我正在嘗試使用nodegrunt搜索Windows上特定文件夾中的幾個文件。使用Node.js在dir中搜索文件

我有一個grunt task,有一個功能來讀取目錄與JSON文件,但問題是,當我運行任務,代碼讀取該文件沒有做任何事情,一切對grunt task完美運行,但那。我不確定路徑的參考是否正確,但我也使用path.normalize(),它不會引發任何錯誤。

這是代碼的片段:

..// 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 
} 

有沒有人有一個想法,爲什麼這段代碼的代碼被跳過,當我運行的任務?我可能會錯過一些基本的東西。謝謝!

+0

您的正斜槓正在轉義您的路徑名稱 –

+0

使用「C:\\ Users \\ ...」或「C:/ Users /」 – Draykos

回答

2

嘗試readdirSync並檢查您的功能是否仍然無法正常工作。我想你的過程在回調之前完成。

+0

似乎您是正確的,我嘗試了它並正在工作!我們會看到另一種方式來閱讀Async以獲得最佳實踐。 –

0

你需要改變你的路徑

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

也與Windows文件路徑的任何操作系統上工作時,獲得一致的結果,使用path.win32:

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

你可以閱讀有關https://nodejs.org/api/path.html#path_windows_vs_posix

0

路徑中的斜線正在逃脫。

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

應該解決您的問題。

1

您可以簡單地使用__dirname對象的當前運行腳本從哪裏得到的路徑:

..// 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 
} 

你可以找到更多信息here