I'm writting a command line program which calculates the total price of an order, using info from a CSV file.
Data inside sample.catalog.csv:
P1,5,1000.00
P2,8,250.00
P3,15,125.00
P4,10,250.00
P5,2,2500.00
And the program must run from the command line with the following arguments:
Example: $ CalculateOrder sample.catalog.csv P1 2 P2 4
(P4 6 P10 5 P12 1 are products and quantity available from csv file)
Total: 4151,25
This is what I have at the moment:
var program = require('commander');
const csv = require('csv');
const fs = require('fs');
program
.version('1.0.0')
.option('-l, --list [list]', 'list of order prices in sample.catalog.csv')
.parse(process.argv)
console.log("hello world")
console.log("list of order prices", program.list);
/*
To read csv file and print the data to the console:
[node orderPrice --list input/sample.catalog.csv]
*/
let parse = csv.parse;
let stream = fs.createReadStream(program.list)
.pipe(parse({ delimiter: ',' }));
var total = 0;
const vat = 23;
const totalWithVat = total * vat;
stream
.on('data', function (data) {
let product = data[0];
let quantity = data[1];
let price = data[2];
console.log(product, quantity, price);
calculateOrder = () => {
if (quantity > 20) {
stream.destroy(new Error("Quantity exceeds stored amounts"));
}
total += price * quantity;
}
})
.on("finish", function () {
console.log("Total price:", totalWithVat);
})
.on("error", function (error) {
console.error("The following error occured:", error);
})
I am having the following error:
λ node orderPrice calculateOrder sample.catalog.csv P1 2 P2 4
hello world
list of order prices undefined
fs.js:636
binding.open(pathModule._makeLong(path),
^
TypeError: path must be a string or Buffer
at Object.fs.open (fs.js:636:11)
at ReadStream.open (fs.js:1982:6)
at new ReadStream (fs.js:1969:10)
at Object.fs.createReadStream (fs.js:1923:10)
at Object.<anonymous> (E:\order-price\orderPrice.js:31:17)
at Module._compile (module.js:643:30)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
at tryModuleLoad (module.js:499:12)
at Function.Module._load (module.js:491:3)
I'm a Node.js newbie and any help is appreciated. Thank you.
node orderPrice.js --list "P4 6 P10 5 P12 1"λ node orderPrice.js --list P1 2 P2 4 hello world list of order prices P1 events.js:183 throw er; // Unhandled 'error' event ^ Error: ENOENT: no such file or directory, open 'E:\order-price\P1'@eskawlnode orderPrice.js --list Catalog.txtwould work.