


Eine kurze Analyse, wie Sie die Mac-Systemversion mithilfe von Node erhalten
Wie erhalte ich die Mac-Systemversion mit node? Im folgenden Artikel erfahren Sie, wie Sie mithilfe von Node auf elegante Weise die Mac-Systemversion erhalten. Ich hoffe, dass er für Sie hilfreich ist.
Ich bin heute plötzlich auf eine Kompatibilitätsanforderung gestoßen, die je nach macOS-Version eine unterschiedliche Kompatibilitätsverarbeitung erfordert.
Unerwarteterweise erlebte die scheinbar einfache Anforderung auch einige Wendungen, aber glücklicherweise wurde das Problem am Ende gelöst.
Zeichnen Sie hier den Prozess der Lösung des Problems auf, damit andere Schüler mit ähnlichen Bedürfnissen darauf zurückgreifen können.
Erhalten Sie den Systemtyp
Da die Kompatibilität für das Mac-System verarbeitet werden muss, müssen Sie zunächst den Systemtyp unterscheiden. Glücklicherweise stellt nodejs relevante APIs bereit. Verwenden Sie einfach os.platform() Sie können den Systemtyp direkt abrufen. <code>os.platform()
即可直接获取系统类型。
import { platform } from 'os'; console.log(platform()); // 'darwin'
值得一提的是,macOS 对应的名称不是 macOS
而是 darwin
。
除了可以通过 os 这个包获取系统类型,我们还可以通过 process.platform
来获取。
import { platform } from 'process'; console.log(platform); // 'darwin'
获取系统版本
很多熟悉 node 的同学这时候会说了,可以通过 os.release()
快速获取系统版本。但是,当你执行 os.release()
,你会发现,它的结果并符合常规认知。
比如,我的系统版本是 12.0.1
,但是,os.release()
的执行结果却是 21.1.0
。
查看 node 官方文档可以发现,node 是通过 uname(3) 来确定操作系统的,所以执行结果比较违背常规认知。
通过命令行获取系统版本
既然 os.release()
获取的系统版本很难让人理解,那么有没有什么方案可以直接获取实际的系统版本号呢?
mac 上存在 sw_vers
命令,可以直接获取系统信息。
$ sw_vers ProductName: macOS ProductVersion: 12.0.1 BuildVersion: 21A559
可以看到 sw_vers
命令直接获取到了系统版本:12.0.1
。
如果不需要其他系统信息,我们可以通过添加命令行参数,过滤命令行结果,直接获取系统版本。
$ sw_vers -ProductVersion 12.0.1
由于命令行不区分大小写,所以命令行参数无所谓大小写,你也可以写成 -productversion
或者 -ProductVersion
。
既然知道命令行怎么写,接下来我们只需要在 node 中调用命令行即可。
import { execSync } from 'child_process'; console.log(execSync('sw_vers -ProductVersion', { encoding: 'utf-8' })); // 12.0.1
优雅地获取系统版本
通过 node 子进程执行命令行命令,可以获取正确的系统版本。但是这种方式有着性能方面的缺陷,需要创建子进程执行命令行,相对于 os.release()
的方式,开销较大。
之前使用 os.release()
的问题在于返回结果比较违反常规认知,但是它的结果其实是正确的,只不过需要进行一次映射。
所以,通过 os.release()
配合映射表即可优雅地获取系统版本。
import os from 'os'; const macVersionMap = new Map([ [21, ['Monterey', '12']], [20, ['Big Sur', '11']], [19, ['Catalina', '10.15']], [18, ['Mojave', '10.14']], [17, ['High Sierra', '10.13']], [16, ['Sierra', '10.12']], [15, ['El Capitan', '10.11']], [14, ['Yosemite', '10.10']], [13, ['Mavericks', '10.9']], [12, ['Mountain Lion', '10.8']], [11, ['Lion', '10.7']], [10, ['Snow Leopard', '10.6']], [9, ['Leopard', '10.5']], [8, ['Tiger', '10.4']], [7, ['Panther', '10.3']], [6, ['Jaguar', '10.2']], [5, ['Puma', '10.1']], ]); const getMacRelease = (release: string) => { const macRelease = release ?? os.release(); const firstReleaseVersion = Number(macRelease.split('.')[0]); const [name, version] = macVersionMap.get(firstReleaseVersion) || [ 'Unknown', '', ]; return { name, version, }; }; console.log(getMacRelease()) // 12
为了方便 mac 新发布系统后依然能够识别,将新系统版本名称识别为 Unknow
rrreee
macOS
ist, sondern darwin
können wir auch Folgendes abrufen Systemtyp über process.platform
zu erhalten. rrreeeHolen Sie sich die Systemversion
os.release( erhalten können) )
. Wenn Sie jedoch os.release()
ausführen, werden Sie feststellen, dass die Ergebnisse nicht mit der herkömmlichen Meinung übereinstimmen. 🎜🎜Zum Beispiel ist meine Systemversion 12.0.1
, aber das Ausführungsergebnis von os.release()
ist 21.1.0
. 🎜🎜Sehen Sie sich offizielles Knotendokument an🎜Sie können feststellen, dass der Knoten durch uname(3)🎜 um das Betriebssystem zu bestimmen, also das Ausführungsergebnis im Gegensatz zur herkömmlichen Erkenntnis. 🎜🎜Rufen Sie die Systemversion über die Befehlszeile ab🎜🎜🎜Da die von os.release()
erhaltene Systemversion schwer zu verstehen ist, gibt es sie irgendetwas Kann die Lösung direkt die tatsächliche Systemversionsnummer erhalten? 🎜🎜Auf dem Mac gibt es den Befehl sw_vers
, mit dem Systeminformationen direkt abgerufen werden können. 🎜rrreee🎜Sie können sehen, dass der Befehl sw_vers
direkt die Systemversion erhält: 12.0.1
. 🎜🎜Wenn keine weiteren Systeminformationen benötigt werden, können wir die Systemversion direkt abrufen, indem wir Befehlszeilenparameter hinzufügen und die Befehlszeilenergebnisse filtern. 🎜rrreee🎜Da in der Befehlszeile die Groß-/Kleinschreibung nicht beachtet wird, spielen die Befehlszeilenparameter keine Rolle. Sie können auch -productversion
oder -ProductVersion
schreiben. 🎜🎜Da wir nun wissen, wie man die Befehlszeile schreibt, müssen wir nur noch die Befehlszeile im Knoten aufrufen. 🎜rrreee🎜Rufen Sie die Systemversion elegant ab🎜🎜🎜Führen Sie den Befehlszeilenbefehl über den Knoten-Unterprozess aus, um die richtige Systemversion zu erhalten. Diese Methode weist jedoch Leistungsmängel auf. Sie erfordert die Erstellung eines Unterprozesses zur Ausführung der Befehlszeile und ist im Vergleich zur Methode os.release()
teurer. 🎜🎜Das Problem bei der vorherigen Verwendung von os.release()
besteht darin, dass das Rückgabeergebnis der herkömmlichen Meinung widerspricht, das Ergebnis jedoch tatsächlich korrekt ist, aber eine Zuordnung erfordert. 🎜🎜Die Systemversion kann also elegant über os.release()
und die Mapping-Tabelle abgerufen werden. 🎜rrreee🎜Um es dem Mac zu erleichtern, das neu veröffentlichte System dennoch zu erkennen, wird der neue Systemversionsname als Unknow
erkannt und die neue Version wird als leere Zeichenfolge erkannt. 🎜🎜Dies dient zum Erlernen der mobilen Modellbewertungsplattform. Wenn die Version leer ist, wird standardmäßig die höhere Version verwendet und hat keinen Einfluss auf die Kompatibilitätsverarbeitung niedrigerer Versionen. 🎜🎜Jetzt können wir die Systemversion elegant über den Knoten abrufen. 🎜🎜Weitere Informationen zu Knoten finden Sie unter: 🎜nodejs-Tutorial🎜! 🎜
os.release()
teurer. 🎜🎜Das Problem bei der vorherigen Verwendung von os.release()
besteht darin, dass das Rückgabeergebnis der herkömmlichen Meinung widerspricht, das Ergebnis jedoch tatsächlich korrekt ist, aber eine Zuordnung erfordert. 🎜🎜Die Systemversion kann also elegant über os.release()
und die Mapping-Tabelle abgerufen werden. 🎜rrreee🎜Um es dem Mac zu erleichtern, das neu veröffentlichte System dennoch zu erkennen, wird der neue Systemversionsname als Unknow
erkannt und die neue Version wird als leere Zeichenfolge erkannt. 🎜🎜Dies dient zum Erlernen der mobilen Modellbewertungsplattform. Wenn die Version leer ist, wird standardmäßig die höhere Version verwendet und hat keinen Einfluss auf die Kompatibilitätsverarbeitung niedrigerer Versionen. 🎜🎜Jetzt können wir die Systemversion elegant über den Knoten abrufen. 🎜🎜Weitere Informationen zu Knoten finden Sie unter: 🎜nodejs-Tutorial🎜! 🎜Das obige ist der detaillierte Inhalt vonEine kurze Analyse, wie Sie die Mac-Systemversion mithilfe von Node erhalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Node.js kann als Backend-Framework verwendet werden, da es Funktionen wie hohe Leistung, Skalierbarkeit, plattformübergreifende Unterstützung, ein umfangreiches Ökosystem und einfache Entwicklung bietet.

Um eine Verbindung zu einer MySQL-Datenbank herzustellen, müssen Sie die folgenden Schritte ausführen: Installieren Sie den MySQL2-Treiber. Verwenden Sie mysql2.createConnection(), um ein Verbindungsobjekt zu erstellen, das die Hostadresse, den Port, den Benutzernamen, das Passwort und den Datenbanknamen enthält. Verwenden Sie „connection.query()“, um Abfragen durchzuführen. Verwenden Sie abschließend Connection.end(), um die Verbindung zu beenden.

Die folgenden globalen Variablen sind in Node.js vorhanden: Globales Objekt: global Kernmodul: Prozess, Konsole, erforderlich Laufzeitumgebungsvariablen: __dirname, __filename, __line, __column Konstanten: undefiniert, null, NaN, Infinity, -Infinity

Es gibt zwei npm-bezogene Dateien im Node.js-Installationsverzeichnis: npm und npm.cmd. Die Unterschiede sind wie folgt: unterschiedliche Erweiterungen: npm ist eine ausführbare Datei und npm.cmd ist eine Befehlsfensterverknüpfung. Windows-Benutzer: npm.cmd kann über die Eingabeaufforderung verwendet werden, npm kann nur über die Befehlszeile ausgeführt werden. Kompatibilität: npm.cmd ist spezifisch für Windows-Systeme, npm ist plattformübergreifend verfügbar. Nutzungsempfehlungen: Windows-Benutzer verwenden npm.cmd, andere Betriebssysteme verwenden npm.

Die Hauptunterschiede zwischen Node.js und Java sind Design und Funktionen: Ereignisgesteuert vs. Thread-gesteuert: Node.js ist ereignisgesteuert und Java ist Thread-gesteuert. Single-Threaded vs. Multi-Threaded: Node.js verwendet eine Single-Threaded-Ereignisschleife und Java verwendet eine Multithread-Architektur. Laufzeitumgebung: Node.js läuft auf der V8-JavaScript-Engine, während Java auf der JVM läuft. Syntax: Node.js verwendet JavaScript-Syntax, während Java Java-Syntax verwendet. Zweck: Node.js eignet sich für I/O-intensive Aufgaben, während Java für große Unternehmensanwendungen geeignet ist.

Ja, Node.js ist eine Backend-Entwicklungssprache. Es wird für die Back-End-Entwicklung verwendet, einschließlich der Handhabung serverseitiger Geschäftslogik, der Verwaltung von Datenbankverbindungen und der Bereitstellung von APIs.

Detaillierte Erläuterungs- und Installationshandbuch für Pinetwork -Knoten In diesem Artikel wird das Pinetwork -Ökosystem im Detail vorgestellt - PI -Knoten, eine Schlüsselrolle im Pinetwork -Ökosystem und vollständige Schritte für die Installation und Konfiguration. Nach dem Start des Pinetwork -Blockchain -Testnetzes sind PI -Knoten zu einem wichtigen Bestandteil vieler Pioniere geworden, die aktiv an den Tests teilnehmen und sich auf die bevorstehende Hauptnetzwerkveröffentlichung vorbereiten. Wenn Sie Pinetwork noch nicht kennen, wenden Sie sich bitte an was Picoin ist? Was ist der Preis für die Auflistung? PI -Nutzung, Bergbau und Sicherheitsanalyse. Was ist Pinetwork? Das Pinetwork -Projekt begann 2019 und besitzt seine exklusive Kryptowährung PI -Münze. Das Projekt zielt darauf ab, eine zu erstellen, an der jeder teilnehmen kann

Serverbereitstellungsschritte für ein Node.js-Projekt: Bereiten Sie die Bereitstellungsumgebung vor: Erhalten Sie Serverzugriff, installieren Sie Node.js, richten Sie ein Git-Repository ein. Erstellen Sie die Anwendung: Verwenden Sie npm run build, um bereitstellbaren Code und Abhängigkeiten zu generieren. Code auf den Server hochladen: über Git oder File Transfer Protocol. Abhängigkeiten installieren: Stellen Sie eine SSH-Verbindung zum Server her und installieren Sie Anwendungsabhängigkeiten mit npm install. Starten Sie die Anwendung: Verwenden Sie einen Befehl wie node index.js, um die Anwendung zu starten, oder verwenden Sie einen Prozessmanager wie pm2. Konfigurieren Sie einen Reverse-Proxy (optional): Verwenden Sie einen Reverse-Proxy wie Nginx oder Apache, um den Datenverkehr an Ihre Anwendung weiterzuleiten
