2017-04-24 78 views
1

據爲文檔fs.statherestat函數可以接受一個字符串文件路徑或緩衝器。Node.js的fs.stat [類型錯誤:路徑必須是一個字符串]在經過緩衝

但是當我通過一個緩衝區,我得到一個錯誤:

[TypeError: path must be a string]

下面是代碼。

exports.importNow = function (req, res) { 
try { 
     fs.stat(req.files.csv.buffer, function (err, stat) { 
      if(err == null) { 
       console.log(2); 
       return resolve(); 
      } else { 
       console.log(3); 
       return reject([validation_errors.FILE_DOES_NOT_EXIST, err]); 
      } 
     }); 

    } catch (err) { 
     console.log(5); 
     console.log(err); 
     return reject([validation_errors.FILE_DOES_NOT_EXIST, err]); 
    } 
} 

Cann有人能幫我找到原因嗎?或者我錯過了什麼? 謝謝。

+0

你正在運行什麼版本的節點? (運行'node --version'找出你是否知道) – Frxstrem

+0

嗨Frxstrem,我使用的節點版本是 - v4.6.2 – Katti

回答

1

您使用的是舊版本的Node.js(最新版本是v7.9.0,最早版本是v6.0.0)。

自v6.0.0(see changelog)以來,文件系統API只支持緩衝區。對於早期版本,你需要的緩衝區轉換爲字符串:

fs.stat(req.files.csv.buffer.toString(), function (err, stat) { 
    // ... 
}); 

你應該升級到V6.0.0的Node.js或更高版本(我建議如果可能的話),或使用的文件是v4.6(因爲您鏈接的文檔是最新版本,與您的版本不同)。

+0

我更新了node.js.現在它是7. * 但我仍然得到這個錯誤。 '{ 「errno」:-36, 「code」:「ENAMETOOLONG」, 「syscall」:「stat」, 「path」:...' – Katti

相關問題