我想讀這個代碼的文件內容:fs.readFileSync並不做任何事情的情況下,該文件不存在
var content = fs.readFileSync(filename);
它當這樣的文件名的文件存在工作正常。但是,如果文件不存在,它不會執行任何操作。它永遠掛在那裏。
一個解決方案可能是在我嘗試讀取它之前檢查文件是否存在,但我希望這將是fs
模塊的一部分,因此它將返回未定義的或任何可以方便處理的錯誤。
這幾乎是我的整個代碼,你能看到任何問題嗎?我不能。
for (var i=0; i<configFiles.length;i++){
waterfallMain(configFiles[i]);
}
//var importDefinition = config.importDefinition;
function waterfallMain(configFile){
async.waterfall([
function(callback){
sftpHandler.downloadFile(credentials.host, credentials.username, credentials.password, credentials.path+configFile.importFileName, callback);
console.log("Downloading done. Changing file encoding and reading data.");
readFileSync_encoding(configFile.importFileName, "ISO-8859-1", callback);
},
function(fileData, callback) {
mainProcess(fileData, callback);
},
function(data, callback) {
postImportDefinition(data, callback);
},
function(data, uri, callback) {
postData(data, uri, callback);
},
function(syncUri, callback) {
getSyncResponseInIntervals(syncUri, callback);
}],
// the bonus final callback function
function(err, status) {
if (err) {
console.log(err);
}
console.log(status);
return;
});
}
function readFileSync_encoding(filename, encoding, callback) {
var content = fs.readFileSync(filename);
callback(null, iconvlite.decode(content, encoding));
return;
}
編輯:
這個問題實際上是在IDE中我一直在使用c9.io
當我跑在本地,我接收到錯誤。 有趣的發現。
當我在一個不存在的文件上運行該命令時,它會拋出一個異常:'錯誤:ENOENT:沒有這樣的文件或目錄,打開'not-here.txt'。你確定你沒有捕捉和默默地忽略異常嗎? – MrWillihog
確實會解釋它。我在瀑布中調用了該方法,即使我將控制檯日誌放在應該捕獲錯誤的地方,或者我放了一個斷點,它也不會被執行。我沒有其他處理。雖然會做更好的檢查。 –