为什么fs.readFile返回缓冲区
Why is fs.readFile returning a buffer?
我已经提到这个问题了。也就是说,我不认为我的问题在于对异步的误解。
这是我模块的相关部分。
var fs = require('fs');
var q = require('q');
var u = require('../utils/json');
var indexFile = './data/index.json';
function getIndex() {
var def = q.defer(),
promise = def.promise,
obj;
fs.readFile(indexFile, function(err,data) {
if (err) {
throw err;
def.reject(err);
}
console.log('data', data);
def.resolve(obj);
});
return promise;
}
当我记录"数据"时,我得到的是一个缓冲区(如下),而不是该文件的JSON内容。
<Buffer 5b 7b 22 68 65 6c 6c 6f 22 3a 22 77 6f 72 6c 64 22 7d 5d>
有什么想法吗?
根据'fs'模块的Node.js API文档,如果不传递encoding
选项,read
函数将返回一个缓冲区。
如果您传递一个值进行编码,它将返回一个具有该编码的字符串:
fs.readFile('/etc/passwd', 'utf-8', callback)
如前所述,fs模块需要编码选项作为第二个参数。
此外,如果您确定您的文件由utf-8字符串组成,则可以使用;
fs.readFile(indexFile, function(err,data) {
if (err) {
return def.reject(err);
}
console.log('data', data.toString());
def.resolve(obj);
});
试试这个。。。你需要包括编码
fs.readFile(indexFile,'utf8', function(err,data) {
if (err) {
throw err;
}
//Do something with data
console.log(data);
});
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- JS验证ajax返回的html中的表单数据
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 缓冲区中的nodejs解码字符串返回多行字符串
- dojo/使用NodeJS请求一个png图像数组缓冲区,并将图像返回给客户端
- 为什么fs.readFile返回缓冲区
- javascript readAsArrayBuffer返回空数组缓冲区