我已经提到了 this question已经。也就是说,我不认为我的问题在于对异步的误解。
这是我模块的相关部分。
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>
有什么想法吗?
最佳答案
根据 Node.js API docs for 'fs' module ,如果未传递 encoding
选项,则 read
函数将返回一个缓冲区。
如果您传递一个编码值,它将返回一个具有该编码的字符串:
fs.readFile('/etc/passwd', 'utf-8', callback)
关于javascript - 为什么 fs.readFile 返回一个缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26269211/