导出 PapaParse 函数的问题

Issues with exporting PapaParse function

我是 JavaScript 和 Node 的新手,正在为我的第一个应用程序进行概念验证。我的目标是:

在以前同事的帮助下,我发现 PapaParselodash 可以帮助解析数据并进行搜索。如果我在同一个应用程序中调用该函数,该应用程序运行良好。当我尝试导出函数时,我没有得到任何结果。两周以来,我一直在尝试自己解决这个问题,希望有人能帮助我。

filename: newFOTD.js

var papa = require('papaparse');
var _ = require('lodash');
var fs = require('fs');
var csvfile = '../data/flavorDB.csv';

function flavorOfTheDay(date) {
    papa.parse(fs.createReadStream(csvfile), {
        header: true,
        delimiter: ",",
        complete: function(results) {
            var match = _.filter(results.data, _.matches({'Date': (date)}));
            match.forEach(function (flavorDB) {
                if (flavorDB.Note.length != "") { /* eslint-disable no-console */
                    console.log("Today's flavor is " + flavorDB.Flavor + ". Did you know that today is also " + flavorDB.Note + "? How cool!");
                } else console.log(flavorDB.Flavor);
            })
        }
    })
}
flavorOfTheDay('2018-08-09');

module.exports.flavorOfTheDay = flavorOfTheDay

以上效果很好。当我尝试访问导出的函数时,没有返回任何数据。

filename: program.js

var test = require('./lib/newFOTD');

test.flavorOfTheDay('07-08-2018')

我一定是在使用 Papaparse 时做错了什么,无法弄清楚它是什么。我可以在 Papaparse 逻辑之外的 flavorOfTheDay 函数中放置一个简单的 console.log(date),当我从 'program.js' 调用该函数时,我将获得传回的 date 数据在控制台中。 我将不胜感激任何帮助或指出我正确的方向。我原以为是一个简单的测试,可以让我继续进行概念验证的下一阶段,结果却变成了失眠和令人沮丧的几周,哈哈。谢谢你。

我认为@MukeshSharma 想表达的是:由于您的函数是异步的,因此在调用 flavorOfTheDay() 函数时必须提供回调函数。就像您在第一个代码片段中所做的那样:flavorOfTheDay('07-12-2018', doStuff) --> doStuff 是您的回调函数。

将上面的示例修改为匿名回调函数:

filename: program.js

var test = require('./lib/newFOTD');

test.flavorOfTheDay('07-08-2018', function(date, data) {
  // do whatever you like with your data here
  console.log(date);
  console.log(data);
})

PapaParse 的问题是我如何声明用于解析的 CSV 文件的变量并需要使用 path 来使其工作。

正确的方法

filename: newFOTD.js

var path = require('path');
var csvfile = path.join(__dirname, '..', 'data', 'flavorDB.csv');

INCORRECT/ORIGINAL 方式

filename: newFOTD.js

var csvfile = '../data/flavorDB.csv';

感谢David Boskovic for helping answer, what I thought was an issue with the PapaParse code. Once I thought it was an issue with code I opened an issue on Github. Calling Papaparse as an exported module not returning data