2017-04-24 74 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

相关问题