2012-10-28 23 views
9

Jestem nowy w programowaniu w javascript. Otrzymałem zadanie napisania pliku .js, który uruchomi plik input.json. Mam do uruchomienia go jako takie:Jak uruchomić plik javascript za pomocą skryptu node.js i bash?

./name.js input.json 

Jak mogę włączyć node.js w tym procesie i jak mogę dostać zacisk do przyjęcia takiego scenariusza?

Dzięki!

Edytuj: Rozwiązałem mój problem! Nie mogę odpowiedzieć na mój własny problem z powodu zasad, w każdym razie ...

#!/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; 
}); 

To jest zasadniczo to, co zrobiłem. Spędziłem trochę czasu, szukając i łącząc rzeczy znalezione z różnych postów i pracowałem - może to nie jest najlepszy sposób, ale działa. Przechowuje mój plik .json do zmiennej pliku, którą następnie przekazałem jako argument funkcji w innym miejscu. Dziękuję wszystkim.

+2

Potrzebujesz prostej linii, wskazując na node.js. '#!/usr/bin/env node' maybe –

+0

możliwy duplikat [Czy możliwe jest uruchamianie skryptów Node.js bez wywoływania \ 'node \'?] (http://stackoverflow.com/questions/4806571/is- it-possible-to-run-node-js-scripts-without-invoking-node) –

+0

@MattBall Te dwa pytania nie wyglądają jak duplikaty –

Odpowiedz

10
#!/usr/bin/env node 
    var commandLineArguments = process.argv.slice(2); 
    ... 
+0

Dzięki za sugestię! Skończyło się na zrobieniu czegoś podobnego. Kiedy zrobiłem 'console.log (commandLineArguments);' dało mi '['input.json']', co nie jest dokładnie tym, czego chciałem ... – minzeycat

+0

Chcesz '' console.log (util.inspect (commandLineArguments)) '' –

2

Może zbyt oczywiste, ale najłatwiej jest:

node ./name.js input.json 
+1

Tak, to jest to, co zrobiłem na początku, ale zdałem sobie sprawę, że jeśli wstawię co Cthulhu powiedział powyżej, mógłbym to zrobić bez części "węzła"! – minzeycat

0

Może trochę późno. Ale twój post mnie zainspirował. Nie wiedziałem, że możesz użyć js dla aplikacji. Zawsze robiłem to ze skryptem powłoki. Rozwiązanie z She-bang wskazujące na nodejs jest niesamowite.

Dzięki za sugestię! Skończyło się na zrobieniu czegoś podobnego. Kiedy I zrobił konsolę.log (commandLineArguments); dało mi ['input.json'], , co nie jest dokładnie tym, czego chciałem.

Teraz mogę odpowiedzieć na Twój komentarz. To daje ci [ 'input.json' ] prawo? [] informuje, że jest to tablica, a jedynym elementem jest 'input.json'. Musisz więc wybrać pierwszy element tej tablicy.

console.log(commandLineArguments[0]); 

Mam nadzieję, że będę mógł Ci pomóc, nawet gdy będzie za późno.

Dziękuję: D

Powiązane problemy