Array degli argomenti passati da linea di comando.
Avete provato a fare?
console.log('Hello World');
console.log(process.argv[2]);
console.log(process.argv[3]);
console.log(process.argv[4]);
// Comado: node app.js ciao hola hi
// Output:
// ciao
// hola
// hi
// E se vogliamo passare nome e cognome come unico argomento?
console.log("Hello " + process.argv[2]);
// Comando: node app.js Artur Mamedov
// Output: Hello Artur
// Quindi vale la regole delle stringhe come in Javascript:
// - Se qualcosa vuoi delimitare, le apici o le virgolette devi usare
console.log("Hello " + process.argv[2]);
// Comando: node app.js "Artur Mamedov"
// Output: Hello Artur Mamedov
// Comando: node app.js Marco 25
console.log(process.argv);
// Output: ['node', '/path/to/app.js', 'Marco', '25']
// Argomenti utente (senza node e script)
const userArgs = process.argv.slice(2);
console.log(userArgs); // ['Marco', '25']
Oggetto con tutte le variabili d'ambiente.
// Leggere variabili d'ambiente
console.log(process.env.NODE_ENV); // 'development' o 'production'
console.log(process.env.PORT || 3000); // Porta con fallback
// Settare variabili (solo per il processo corrente)
process.env.MY_VAR = 'valore personalizzato';
Restituisce la directory di lavoro corrente.
console.log(process.cwd()); // '/Users/marco/my-project'
// Cambiare directory
process.chdir('/altra/directory');
console.log(process.cwd()); // '/altra/directory'
Termina il processo con un codice di uscita.
// Uscita normale
process.exit(0);
// Uscita con errore
process.exit(1);
// Uscita con codice personalizzato
if (error) {
console.error('Errore fatale!');
process.exit(2);
}
Identifica il sistema operativo.
console.log(process.platform);
// Possibili valori: 'win32', 'darwin', 'linux', 'freebsd', etc.
if (process.platform === 'win32') {
console.log('Stai usando Windows');
} else if (process.platform === 'darwin') {
console.log('Stai usando macOS');
}
Informazioni sulla versione di Node.js e dipendenze.
console.log(process.version); // 'v18.17.0'
console.log(process.versions);
// {
// node: '18.17.0',
// v8: '10.2.154.26-node.26',
// npm: '9.6.7',
// ...
// }
ID del processo corrente.
console.log(process.pid); // 12345
console.log(process.ppid); // ID del processo padre
Stream per output, errori e input.
// Scrivere su stdout (equivale a console.log)
process.stdout.write('Hello World!\n');
// Scrivere su stderr
process.stderr.write('Errore!\n');
// Leggere da stdin
process.stdin.setEncoding('utf8');
process.stdin.on('data', (input) => {
console.log(`Hai scritto: ${input.trim()}`);
});
Ascolta eventi del processo.
// Catturare CTRL+C
process.on('SIGINT', () => {
console.log('Ricevuto SIGINT. Uscita in corso...');
process.exit(0);
});
// Catturare errori non gestiti
process.on('uncaughtException', (error) => {
console.error('Errore non catturato:', error);
process.exit(1);
});
// Promise rifiutate non gestite
process.on('unhandledRejection', (reason, promise) => {
console.error('Promise rifiutata:', reason);
});
// Prima dell'uscita del processo
process.on('exit', (code) => {
console.log(`Processo in uscita con codice: ${code}`);
});
// cli.js
const args = process.argv.slice(2);
const command = args[0];
switch (command) {
case 'help':
console.log('Uso: node cli.js <comando>');
break;
case 'version':
console.log(`Versione Node.js: ${process.version}`);
break;
default:
console.log('Comando non riconosciuto. Usa "help".');
process.exit(1);
}
let server = require('http').createServer(/* ... */);
function gracefulShutdown() {
console.log('Chiusura in corso...');
server.close(() => {
console.log('Server chiuso.');
process.exit(0);
});
}
process.on('SIGTERM', gracefulShutdown);
process.on('SIGINT', gracefulShutdown);
function checkEnvironment() {
const requiredVars = ['DATABASE_URL', 'SECRET_KEY'];
for (const envVar of requiredVars) {
if (!process.env[envVar]) {
console.error(`Variabile ${envVar} mancante!`);
process.exit(1);
}
}
console.log('Ambiente configurato correttamente ✅');
}
checkEnvironment();
- Sempre gestire
uncaughtException
eunhandledRejection
- Usare
process.exit()
con parsimonia - preferire return o throw - Validare
process.env
all'avvio dell'applicazione - Implementare graceful shutdown per applicazioni server