Heim > Artikel > Web-Frontend > Ausführliche Erläuterung der Verwendung von Node.js zum Schreiben plattformübergreifender Spawn-Anweisungen
Das Mächtigste an Node.js ist „plattformübergreifend“. Mit ein wenig Sorgfalt beim Codieren funktioniert Ihr Code auf Windows-, Linux- und OSX-Plattformen. Der folgende Artikel stellt hauptsächlich vor, wie man Node.js zum Schreiben plattformübergreifender Spawn-Anweisungen verwendet. Freunde in Not können sich darauf beziehen.
Vorwort
Node.js ist plattformübergreifend, was bedeutet, dass es auf Windows-, OSX- und Linux-Plattformen ausgeführt werden kann. Viele Node.js-Entwickler entwickeln unter OSX und stellen den Code dann auf Linux-Servern bereit. Da sowohl OSX als auch Linux auf Unix basieren, haben sie viele Gemeinsamkeiten. Windows ist auch eine offiziell unterstützte Plattform für Node.js. Solange Sie den Code richtig schreiben, können Sie ihn ohne Druck auf verschiedenen Plattformen ausführen.
Unter dem child_process-Modul von Node.js gibt es eine Spawn-Funktion, mit der Befehle auf dem System aufgerufen werden können. Beispielsweise können wir auf Linux, macOS und anderen Systemen
const spawn = require('child_process').spawn; spawn('npm', { stdio: 'inherit' });zum Aufrufen des npm-Befehls. Die gleiche Anweisung meldet jedoch einen Fehler, wenn sie unter Windows ausgeführt wird.
Error: spawn npm ENOENT at exports._errnoException (util.js:855:11) at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32) at onErrorNT (internal/child_process.js:344:16) at nextTickCallbackWith2Args (node.js:455:9) at process._tickCallback (node.js:369:17) at Function.Module.runMain (module.js:432:11) at startup (node.js:141:18) at node.js:980:3Denn wenn wir unter Windows npm ausführen, führen wir tatsächlich den Stapel npm.cmd aus, und unter Windows führen wir die Stapelverarbeitung .cmd und .bat aus kann nicht unabhängig vom cmd.exe-Interpreter ausgeführt werden. Daher müssen wir cmd explizit aufrufen
spawn('cmd', ['/c', 'npm'], { stdio: 'inherit' });oder beim Aufruf der Spawn-Funktion die Shell-Option auf true setzen Rufen Sie cmd implizit auf (diese Option wurde ab Node.js v6-Version hinzugefügt)
spawn('npm', { stdio: 'inherit', shell: true });Außerdem besteht zwar keine Notwendigkeit, es unter Linux festzulegen, Mit der Shell-Option von macOS und anderen Systemen kann der Befehl normal ausgeführt werden. Wenn Sie Shell auf „true“ setzen, wird die Ausführung des Befehls nicht behindert, es wird jedoch ein zusätzlicher unnötiger Shell-Prozess generiert, der sich auf die Leistung auswirkt. Wenn Sie also einen plattformübergreifenden Spawn-Befehl schreiben möchten, ohne zusätzlichen Overhead hinzuzufügen, können Sie ihn wie folgt schreiben
const process = require('process'); const { spawn } = require('child_process'); spawn('npm', { stdio: 'inherit', // 仅在当前运行环境为 Windows 时,才使用 shell shell: process.platform === 'win32' });Cross-Spawn-Module von Drittanbietern
npm install cross-spawnNutzung
const spawn = require('cross-spawn'); spawn('npm', { stdio: 'inherit' });
Ausführlichere Erklärungen zur Verwendung von Node.js zum Schreiben plattformübergreifender Spawn-Anweisungen finden Sie auf der chinesischen PHP-Website!