2012-10-28 11 views
9

Sono nuovo alla programmazione in javascript. Mi viene dato un compito di scrivere un file .js che eseguirà alcuni input.json. Dovrei farlo funzionare come tale:Come si esegue un file javascript utilizzando node.js e lo script di bash?

./name.js input.json 

Come posso integrare node.js in questo processo e come ottengo terminale ad accettare che lo script?

Grazie!

Modifica: Ho risolto il mio problema! Non posso rispondere alla mia problema ancora a causa delle regole, in ogni caso ...

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

Questo è in sostanza quello che ho fatto. Ho passato un po 'di tempo a cercare e combinare le cose che ho trovato da diversi post e ho funzionato, forse non è il modo migliore, ma funziona. Questo memorizza il mio file .json nella variabile file, che poi ho inoltrato come argomento di funzione altrove. Grazie a tutti.

+2

È necessaria una linea she-bang, che punta a node.js. '#!/usr/bin/env node' forse –

+0

possibile duplicato di [È possibile eseguire gli script Node.js senza invocare \' node \ '?] (http://stackoverflow.com/questions/4806571/is- it-possible-to-run-node-js-scripts-senza-invoking-node) –

+0

@MattBall Queste due domande non sembrano duplicati –

risposta

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

Grazie per il suggerimento! Ho finito per fare qualcosa di simile. Quando ho fatto 'console.log (commandLineArguments);' mi ha dato '['input.json']', che non è esattamente quello che volevo ... – minzeycat

+0

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

2

Forse troppo evidente, ma il modo più semplice è:

node ./name.js input.json 
+1

Sì, questo è quello che ho fatto all'inizio, ma ho capito se inserivo quello che Cthulhu ha detto sopra, potrei farlo senza la parte 'nodo'! – minzeycat

0

Forse un po 'tardi. Ma il tuo post mi ha ispirato. Non sapevo che è possibile utilizzare js per un'applicazione. L'ho sempre fatto con lo script di shell. La soluzione con she-bang che punta a nodejs è fantastica.

Grazie per il suggerimento! Ho finito per fare qualcosa di simile. Quando I ha fatto console.log (commandLineArguments); mi ha dato ['input.json'], che non è esattamente quello che volevo.

Ora posso rispondere al tuo commento. Ti dà [ 'input.json' ] giusto? il [] ti dice che è un array e 'input.json' è l'unico elemento. Quindi devi selezionare il primo elemento di quell'array.

console.log(commandLineArguments[0]); 

Spero di poterti aiutare anche quando è troppo tardi.

Grazie: D

Problemi correlati