Node.js fs.stat 在传递Buffer上

根据这里 fs.stat的文档, stat函数可以接受一个文件或缓冲区的stringpath。

但是当我通过一个缓冲区,我得到一个错误:

[TypeError:path必须是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] ); } } 

有人能帮我find原因吗? 还是我错过了什么? 谢谢。

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

自v6.0.0以来,文件系统API只支持缓冲区( 请参阅changelog )。 对于较早的版本,您需要将缓冲区转换为string:

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

您应该升级到Node.js v6.0.0或更高版本(如果可能,我build议您使用),或者使用v4.6的文档(因为链接的文档是最新版本,与您的版本不同)。