9

I'm new to programming in javascript. I am given a task to write a .js file that will run some input.json. I'm supposed to run it as such:

./name.js input.json

How can I incorporate node.js in this process and how do I get terminal to accept that script?

Thanks!

Edit: I solved my problem! I can't answer my own problem yet because of rules, anyway...

#!/usr/bin/env node
var fs = require('fs');

args = []
process.argv.forEach(function (val, index, array) 
{
    args.push(val); 
});

var file = fs.readFileSync(args[2], "UTF-8", function (err, data) 
{
if (err) throw err;
});

This is essentially what I did. I spent some time searching and combining things I found from different posts and got this to work - maybe it's not the best way, but it works. This stores my .json file into the file variable, which then I passed in as a function argument elsewhere. Thanks everyone.

minzeycat
  • 143
  • 1
  • 5

3 Answers3

11
   #!/usr/bin/env node
   var commandLineArguments = process.argv.slice(2);
   ...
Tim Boudreau
  • 1,551
  • 10
  • 12
  • Thanks for the suggestion! I ended up doing something similar. When I did `console.log(commandLineArguments);` it gave me `[ 'input.json' ]`, which isn't exactly what I wanted... – minzeycat Oct 28 '12 at 07:05
2

Maybe too obvious, but the easiest way is:

node ./name.js input.json
DanBaker
  • 523
  • 4
  • 12
  • 1
    Yeah, this is what I did at first, but I realized if I put in what Cthulhu said above, I could do it without the `node` part! – minzeycat Oct 28 '12 at 07:06
0

Maybe a bit late. But your post inspired me. I didn't knew that you can use js for an application. I always did it with shell script. The solution with the she-bang pointing to nodejs is awesome.

Thanks for the suggestion! I ended up doing something similar. When I did console.log(commandLineArguments); it gave me [ 'input.json' ], which isn't exactly what I wanted.

Now I can answer your comment. It gives you [ 'input.json' ] right ? the [] tells you that it's an array and 'input.json' is the only item. So you have to select the first element of that array.

console.log(commandLineArguments[0]);

I hope I could help you even when it's too late.

Thank you :D

Rispa57
  • 15
  • 6