Node.js e un runtime JavaScript basato sul motore V8 di Chrome per eseguire codice asincrono basato su eventi lato server.
Variabili Globali
Variabili globali comuni a livello di modulo in CommonJS:
__filename; // Percorso assoluto del file del modulo corrente
__dirname; // Percorso assoluto della directory del modulo corrente
Processi Figli (Child Processes)
child_process.exec()
Inserisce l'output in un buffer e invia stdout/stderr a un callback (ideale per script rapidi):
const { exec } = require('child_process');
exec('ls -la | grep .js', (error, stdout, stderr) => {
if (error) {
console.error(`Execution error: ${error.message}`);
return;
}
console.log(`Output: ${stdout}`);
});
child_process.spawn()
Invia dati di processo in streaming senza buffer (ideale per processi lunghi e grandi quantita di output):
const { spawn } = require('child_process');
// Eredita stdin/stdout/stderr direttamente nel terminale
const child = spawn('npm', ['test'], { stdio: 'inherit' });
child.on('error', (err) => {
if (err.code === 'ENOENT') console.error('Eseguibile non trovato');
if (err.code === 'EACCES') console.error('Permesso negato');
});
child.on('exit', (code, signal) => {
console.log(`Processo terminato con codice ${code}`);
});
Formattazione e Ispezione (util.inspect)
const util = require('util');
// Ispeziona oggetti complessi in profondita con evidenziazione della sintassi
const output = util.inspect(complexObject, {
showHidden: false,
depth: null,
colors: true
});
process.stdout.write(output + '\n');