Avatar ·

Wie man Befehlszeilenargumente an ein Node.js-Programm übergibt und sie abruft

Hallo! Ich bin neu in Node.js und schreibe ein einfaches Dienstprogramm zur Dateiverwaltung. Ich möchte, dass der Benutzer den Dateinamen und den Verarbeitungsmodus (z.B. "read" oder "write") direkt beim Start des Skripts im Terminal übergeben kann. Ich habe versucht, das globale Objekt `process` zu verwenden, verstehe aber nicht ganz, wie ich diese Argumente richtig extrahiere. Hier ist mein Code: ```javascript // app.js const name = process.argv; console.log(name); ``` Wenn ich `node app.js myfile.txt read` ausführe, wird in der Konsole ein Array ausgegeben: `['node', 'app.js', 'myfile.txt', 'read']`. Ich hatte erwartet, nur `myfile.txt` und `read` zu sehen. Wie bekomme ich richtig nur die benutzerdefinierten Argumente, nicht den Pfad zu Node und den Skriptnamen? Außerdem interessiert mich, wie man Optionen wie `--file` oder `-f` verarbeitet, um die Schnittstelle benutzerfreundlicher zu gestalten. Bitte geben Sie mir den besten Weg, um mit Befehlszeilenargumenten in Node.js zu arbeiten. Vielen Dank im Voraus! <<>>

Grundlegende Methode: Verwendung des Arrays process.argv

Sie haben bereits den richtigen Ansatz gefunden. Um nur die benutzerdefinierten Argumente zu erhalten, können Sie die ersten beiden Elemente des Arrays ignorieren:

const args = process.argv.slice(2);
console.log(args); // ['myfile.txt', 'read']

Für die Verarbeitung von Optionen wie --file oder -f empfehle ich die Verwendung von Bibliotheken wie yargs oder commander, die eine einfache Definition und Analyse von Befehlszeilenoptionen ermöglichen. Hier ein Beispiel mit yargs:

const yargs = require('yargs');
const argv = yargs
  .option('file', {
    alias: 'f',
    description: 'Dateiname',
    type: 'string'
  })
  .option('mode', {
    alias: 'm',
    description: 'Verarbeitungsmodus',
    choices: ['read', 'write']
  })
  .argv;

console.log(argv.file); // 'myfile.txt'
console.log(argv.mode); // 'read'

So können Sie benutzerfreundliche Optionen definieren und auf sie zugreifen.