我正在寫一個小文本文件(〜500B),但奇怪的是,如果我使用fs.writeFile之類的異步方法編寫一個空文件, ..)(或WriteableStream的寫入/結束方法)。fs.writeFile回調永遠不會被調用,對於WritableStream.write等是相同的
這工作:
var scanInfo = getScanInfo(core); // returns several lines delimited by \r\n
fs.writeFileSync(filename, scanInfo, 'ascii');
這將創建空文件和回調函數不產生任何輸出:
var scanInfo = getScanInfo(core);
scanInfo.push('') ;
scanInfo = scanInfo.join(DOS_CRLF);
fs.writeFile(filename, scanInfo, 'ascii', function (err) {
if(err) { console.error('Failed'); console.error(err) ; }
else { console.log('OK'); }
});
我一直在尋找類似的職位,但在一個我發現這個問題是什麼else(調用另一個函數返回內容),但我的內容是一個文本字符串(通過調試驗證)。
類似的交:fs.writeFile() doesn't return callback
平臺> Win8.1 64
的NodeJS> 64 0.12.0
P.S.使用函數實際編寫文件的應用程序使用回調函數以「plain nodejs」樣式編寫,但由於它變得更加複雜,我使用Q和Q-IO重寫了主要處理流。 所以現在開始處理是這樣的:
(主模塊)
的一點是,主流在故障功能永遠不會報告任何問題,無論是。函數reportFinished()報告一切正常,並且沒有地方拋出任何異常,因爲上面的原始代碼片段(位於另一個模塊中並作爲writeMyOutputData(core)一部分調用的函數)永遠不會調用回調函數,因此它不可能執行任何異常拋出或任何類型的錯誤處理。
然而,閱讀約瑟夫的意見,這爲他工作後,我懷疑有可能是標準的FS模塊和Q-IO/FS
你關閉文件? – jfriend00
什麼是'DOS_CRLF',只是一個字符串'\ r \ n'?如果我在節點中模擬你的代碼,它似乎工作得很好。我可以問你的文件名是什麼嗎?同樣重要的是,我們在談論什麼平臺? Linux,Mac或Windows? –
什麼節點版本和什麼操作系統? – mscdex