首页 > 解决方案 > 导出 PapaParse 函数的问题

问题描述

我是 JavaScripting 和 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 逻辑之外的函数console.log(date)内部放置一个简单的函数,当我从中调用该函数时,我将获得在控制台中传回的数据。我将不胜感激任何帮助或指出我正确的方向。我认为这将是一个简单的测试,让我可以进入下一阶段的概念验证,结果却变成了失眠和令人沮丧的几周,哈哈。谢谢你。flavorOfTheDay'program.js'date

标签: javascriptnode.jscsvpapaparse

解决方案


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

正确的方式

filename: newFOTD.js

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

不正确/原始方式

filename: newFOTD.js

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

感谢David Boskovic帮助回答,我认为这是 PapaParse 代码的问题。一旦我认为这是代码问题,我在 Github 上打开了一个问题。将 Papaparse 调用为不返回数据的导出模块


推荐阅读