我目前正在摆弄Node.js,我坚持这个问题。
我正在使用csvtojson转换器(https://github.com/Keyang/node-csvtojson)作为一个单独的模块,我可以任意多次在其他JS文件中调用它。
这里是我的tools.js:
module.exports = {
csvToJson: function (csvPath) {
var Converter = require('csvtojson').Converter;
var converter = new Converter({});
var transfer = "DEFAULT";
converter.fromFile(csvPath, function(err, result){
if (err) {
return console.log(err);
}
else {
transfer = result;
}
});
return transfer;
}
};
,我就是这样称呼它的:
var countriesCsvFile = path.join(__dirname, '..', 'testDataFiles', 'countries.csv');
//GRAB TOOLS
var tools = require('../app/tools');
console.log(tools.csvToJson(countriesCsvFile));
结果始终是“默认值”,表示转换器没有接触到它。
我希望将其作为函数的返回值传递,以便能够在不创建文件的情况下动态处理数据并读取该数据。这肯定是一个范围问题,但在我的头皮抓了几个小时,浏览了问题后,我无法检索到任何远程有用的东西。
也是另一个注意事项:如果我调用console.log(结果)而不是transfer = precious,它会显示我宝贵和想要的数据。
发布于 2016-09-09 15:51:08
您必须传入回调函数,因为csvToJson函数在分配任何值之前正在返回“transfer”。就像Sirko说的,它是异步的。您也可以使用承诺而不是回调,但这本身就是另一个主题。
module.exports = {
csvToJson: function (csvPath, callback) {
var Converter = require('csvtojson').Converter;
var converter = new Converter({});
converter.fromFile(csvPath, function(err, result){
if (err) {
callback(err);
}
else {
callback(null, result);
}
});
}
};https://stackoverflow.com/questions/39414301
复制相似问题