I'm following this answer on using MULTER to upload csv from Express and parse the file.
But I'm getting this error:
Error: Route.post() requires callback functions but got a [object Object]
This is my route defination in routes.js:
var Multer = require('multer');
var Parse = require('csv-parse');
var fs = require('fs');
app.post('/lists/subscribers/import-csv', Multer({dest:'./uploads'}), subscriberController.save_csv);
and this is my save_csv function:
exports.save_csv = function(req, res, next) {
var filePath = req.files.file.path;
console.log(filePath);
function onNewRecord(record){
console.log(record)
}
function onError(error){
console.log(error)
}
function done(linesRead){
res.send(200, linesRead)
}
var columns = true;
parseCSVFile(filePath, columns, onNewRecord, onError, done);
res.render('subscriber/import_Csv.ejs');
};
function parseCSVFile(sourceFilePath, columns, onNewRecord, handleError, done){
var source = fs.createReadStream(sourceFilePath);
var linesRead = 0;
var parser = Parse({
delimiter: ',',
columns:columns
});
parser.on("readable", function(){
var record;
while (record = parser.read()) {
linesRead++;
onNewRecord(record);
}
});
parser.on("error", function(error){
handleError(error)
});
parser.on("end", function(){
done(linesRead);
});
source.pipe(parser);
}
How can I fix this?
The full ERROR message:
/Users/filipeferminiano/MEGA/crm-cloud/node_modules/express/lib/router/route.js:196
throw new Error(msg);
^
Error: Route.post() requires callback functions but got a [object Undefined]
at Route.(anonymous function) [as post] (/Users/filipeferminiano/MEGA/crm-cloud/node_modules/express/lib/router/route.js:196:15)
at EventEmitter.app.(anonymous function) [as post] (/Users/filipeferminiano/MEGA/crm-cloud/node_modules/express/lib/application.js:481:19)
at Object.module.exports (/Users/filipeferminiano/MEGA/crm-cloud/routes/routes.js:488:9)
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/lib/express-load.js:247:19
at iterate (/Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/node_modules/async/lib/async.js:131:13)
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/node_modules/async/lib/async.js:142:25
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/lib/express-load.js:263:7
at iterate (/Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/node_modules/async/lib/async.js:131:13)
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/node_modules/async/lib/async.js:142:25
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/lib/express-load.js:263:7
at iterate (/Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/node_modules/async/lib/async.js:131:13)
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/node_modules/async/lib/async.js:142:25
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/lib/express-load.js:263:7
at iterate (/Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/node_modules/async/lib/async.js:131:13)
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/node_modules/async/lib/async.js:142:25
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/lib/express-load.js:263:7
at iterate (/Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/node_modules/async/lib/async.js:131:13)
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/node_modules/async/lib/async.js:142:25
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/lib/express-load.js:263:7
at iterate (/Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/node_modules/async/lib/async.js:131:13)
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/node_modules/async/lib/async.js:142:25
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/lib/express-load.js:263:7
at iterate (/Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/node_modules/async/lib/async.js:131:13)
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/node_modules/async/lib/async.js:142:25
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/lib/express-load.js:263:7
at iterate (/Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/node_modules/async/lib/async.js:131:13)
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/node_modules/async/lib/async.js:142:25
at /Users/filipeferminiano/MEGA/crm-cloud/node_modules/express-load/lib/express-load.js:263:7