15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen
09.10.2024

Wie man Node.js und NPM auf Windows installiert und konfiguriert

Node.js ist eine quelloffene, plattformübergreifende JavaScript-Laufzeitumgebung, die auf Chromes V8-Engine aufgebaut ist und JavaScript-Code außerhalb eines Browsers ausführt. NPM (Node Package Manager) ist der standardmäßige Paketmanager, der mit Node.js gebündelt ist und Zugang zu über zwei Millionen wiederverwendbaren Paketen bietet. Zusammen bilden sie die grundlegende Toolchain für die Entwicklung serverseitiger Anwendungen, CLI-Tools, REST APIs und Full-Stack-JavaScript-Projekte unter Windows.

Dieser Leitfaden behandelt den vollständigen Installations-, Verifizierungs-, Konfigurations- und Erstanwendungs-Workflow für Node.js und NPM unter Windows — einschließlich Versionsverwaltung, PATH-Fehlerbehebung, globalem vs. lokalem Paket-Scoping und produktionsrelevanten Überlegungen, die die meisten Tutorials auslassen.

Die richtige Node.js-Version vor der Installation auswählen

Der Node.js-Veröffentlichungszeitplan folgt einem vorhersehbaren Rhythmus, der Ihre Wahl direkt beeinflusst:

VersionstypStabilitätAnwendungsfallSupportzeitraum
**LTS (Long-Term Support)**HochProduktions-Workloads, Team-Umgebungen30 Monate
**Current**MittelZugang zu den neuesten V8-Engine-Features6 Monate
**Nightly / RC**ExperimentellCore-Entwickler, Bleeding-Edge-TestsKeine Garantie

LTS-Versionen tragen gerade Hauptversionsnummern (z. B. 20.x, 22.x) und erhalten kritische Sicherheits-Patches für 30 Monate. Current-Releases tragen ungerade Hauptversionsnummern und wechseln nach sechs Monaten in den LTS-Status, wenn sie die Stabilitätskriterien erfüllen.

Für die meisten Entwickler und Server-Deployments — einschließlich Anwendungen, die auf VPS Hosting gehostet werden — ist LTS die richtige Wahl. Der Current-Branch ist nur dann geeignet, wenn Sie speziell ein V8-Feature oder eine Node.js-API benötigen, die noch nicht in der aktiven LTS-Linie verfügbar ist.

NVM für Windows: Die professionelle Alternative zur direkten Installation

Bevor Sie mit dem MSI-Installer fortfahren, überlegen Sie, ob Sie nvm-for-windows (Node Version Manager für Windows) benötigen. Der direkte Installer bindet Ihr System an eine einzige Node.js-Version. NVM ermöglicht es Ihnen, mehrere Versionen nebeneinander zu installieren und projektweise zwischen ihnen zu wechseln — entscheidend, wenn Sie Legacy-Codebasen neben modernen pflegen.

Installieren Sie nvm-for-windows von der offiziellen GitHub-Releases-Seite und verwenden Sie dann:

“`

nvm install 20.14.0

nvm use 20.14.0

nvm list

“`

Wenn Sie ein einzelnes Projekt verwalten oder Node.js zum ersten Mal lernen, ist der MSI-Installer ausreichend. Für professionelle Umgebungen wird NVM dringend empfohlen.

Schritt 1: Den Node.js-Installer herunterladen

  1. Navigieren Sie zur offiziellen Node.js-Website unter nodejs.org.
  2. Wählen Sie den LTS-Tab und laden Sie den Windows Installer (`.msi`) für Ihre Architektur herunter. Fast alle modernen Windows-Rechner sind 64-Bit (`node-v20.x.x-x64.msi`). ARM64-Builds sind für Windows-on-ARM-Geräte verfügbar.
  3. Überprüfen Sie den SHA-256-Prüfsumme der heruntergeladenen Datei anhand der auf der Node.js-Download-Seite veröffentlichten Werte, bevor Sie den Installer ausführen. Dieser Schritt ist in jeder sicherheitsbewussten Umgebung nicht verhandelbar.

So überprüfen Sie die Prüfsumme in PowerShell:

“`powershell

Get-FileHash .node-v20.14.0-x64.msi -Algorithm SHA256

“`

Vergleichen Sie die Ausgabe mit dem veröffentlichten Hash. Eine Abweichung weist auf einen beschädigten oder manipulierten Download hin.

Schritt 2: Node.js und NPM installieren

  1. Doppelklicken Sie auf die heruntergeladene `.msi`-Datei, um den Setup-Assistenten zu starten.
  2. Klicken Sie auf dem Willkommensbildschirm auf Weiter.
  3. Akzeptieren Sie den Endbenutzer-Lizenzvertrag und klicken Sie auf Weiter.
  4. Der Standard-Installationspfad ist `C:Program Filesnodejs`. Sofern Sie keinen besonderen Grund haben, diesen zu ändern (z. B. ein Nicht-Systemlaufwerk zur Speicherplatzverwaltung), belassen Sie ihn wie er ist.
  5. Vergewissern Sie sich auf dem Bildschirm Benutzerdefiniertes Setup, dass npm package manager ausgewählt ist. Er ist standardmäßig aktiviert.
  6. Auf dem Bildschirm Tools für native Module sehen Sie eine Option zur automatischen Installation von Chocolatey, Python und Visual Studio Build Tools. Aktivieren Sie dieses Kontrollkästchen, wenn Sie damit rechnen, NPM-Pakete zu installieren, die native C++-Addons enthalten (z. B. `bcrypt`, `sharp`, `node-gyp`-abhängige Pakete). Dieser Schritt installiert mehrere Gigabyte an Tooling — überspringen Sie ihn, wenn Sie nur reine JavaScript-Pakete benötigen.
  7. Klicken Sie auf Installieren und dann auf Fertigstellen.

Der Installer registriert `node.exe` und `npm.cmd` automatisch in Ihrer System-Umgebungsvariable `PATH` unter `C:Program Filesnodejs`.

Was der Installer tatsächlich mit Ihrem System macht

Das Verstehen der Nebeneffekte verhindert künftige Debugging-Kopfschmerzen:

  • Fügt `C:Program Filesnodejs` zum System-PATH hinzu (für alle Benutzer verfügbar).
  • Erstellt `C:Users<username>AppDataRoamingnpm` als Standard-Präfix für globale Pakete.
  • Registriert Node.js in der Windows-Registrierung unter `HKLMSOFTWARENode.js`.
  • Installiert `npx` (den NPM-Paket-Runner) zusammen mit `npm`.

Schritt 3: Die Installation überprüfen

Öffnen Sie ein neues Eingabeaufforderungs- oder PowerShell-Fenster. Das Wort „neu” ist wichtig — bestehende Terminal-Sitzungen cachen den alten PATH und spiegeln die Änderungen des Installers nicht wider.

“`

node -v

“`

Erwartete Ausgabe: `v20.14.0` (oder Ihre installierte Version)

“`

npm -v

“`

Erwartete Ausgabe: `10.x.x`

“`

npx -v

“`

Erwartete Ausgabe: entspricht der npm-Version oder liegt nahe daran

Wenn `node` nicht erkannt wird, wurde der PATH nicht korrekt aktualisiert. Beheben Sie dies manuell:

  1. Öffnen Sie Systemeigenschaften > Erweitert > Umgebungsvariablen.
  2. Suchen Sie unter Systemvariablen `Path` und klicken Sie auf Bearbeiten.
  3. Fügen Sie `C:Program Filesnodejs` hinzu, falls es fehlt.
  4. Klicken Sie auf OK, schließen Sie alle Terminal-Fenster und öffnen Sie sie erneut.

Häufige Probleme nach der Installation diagnostizieren

Problem: `npm` wird erkannt, aber `node` nicht (oder umgekehrt).

Ursache: Ein unvollständiger PATH-Eintrag oder eine konfliktverursachende Installation von Chocolatey oder einem früheren NVM-Setup.

Lösung: Führen Sie `where node` und `where npm` aus, um zu ermitteln, welche Binärdateien aufgelöst werden. Entfernen Sie veraltete Einträge.

Problem: `EACCES`-Berechtigungsfehler beim Ausführen von `npm install -g`.

Ursache: Das globale Präfix-Verzeichnis verfügt nicht über Schreibberechtigungen für den aktuellen Benutzer.

Lösung: Ändern Sie das globale Präfix in ein benutzereigenes Verzeichnis (behandelt in Schritt 5).

Problem: `node` öffnet den Microsoft Store anstatt Node.js auszuführen.

Ursache: Windows 10/11 wird mit einem App-Ausführungsalias für `node` geliefert, der zum Store weiterleitet.

Lösung: Gehen Sie zu Einstellungen > Apps > App-Ausführungsaliase und deaktivieren Sie die Aliase für `python.exe` und `node.exe` (falls vorhanden).

Schritt 4: NPM auf die neueste Version aktualisieren

Die mit einem Node.js-Installer gebündelte NPM-Version liegt typischerweise ein oder zwei Minor-Versionen hinter dem aktuellen Release. Aktualisieren Sie sie unmittelbar nach der Installation:

“`

npm install -g npm@latest

“`

Das Flag `-g` installiert das Paket in das globale Präfix-Verzeichnis und macht es systemweit verfügbar. Überprüfen Sie nach dem Update erneut:

“`

npm -v

“`

Wichtiger Sonderfall: Unter Windows kann das globale Aktualisieren von NPM gelegentlich eine veraltete `npm.cmd` in `C:Program Filesnodejs` hinterlassen, die auf die alte Version zeigt, während die neue Version in `C:Users<username>AppDataRoamingnpm` installiert ist. Wenn `npm -v` nach dem Update immer noch die alte Version anzeigt, prüfen Sie, welche Binärdatei zuerst im PATH steht:

“`

where npm

“`

Der Pfad unter `AppDataRoamingnpm` sollte in der Ausgabe vor `C:Program Filesnodejs` erscheinen. Falls nicht, ordnen Sie die PATH-Einträge entsprechend um.

Schritt 5: NPM für Ihre Umgebung konfigurieren

Die NPM-Konfiguration wird in einer `.npmrc`-Datei gespeichert, die auf drei Ebenen existieren kann: pro Projekt, pro Benutzer (`C:Users<username>.npmrc`) und global (`C:Program Filesnodejsnode_modulesnpmnpmrc`). Projektspezifische Einstellungen überschreiben benutzerspezifische Einstellungen, die wiederum globale Einstellungen überschreiben.

Das globale Paket-Präfix ändern

Das Standard-Globalpräfix (`AppDataRoamingnpm`) funktioniert für die meisten Benutzer, aber auf gemeinsam genutzten Servern oder wenn Disk-Quotas gelten, möchten Sie es möglicherweise umleiten:

“`

npm config set prefix "D:NodeGlobal"

“`

Fügen Sie nach dem Ändern des Präfixes das neue `bin`-Unterverzeichnis zu Ihrem PATH hinzu:

“`

setx PATH "%PATH%;D:NodeGlobal"

“`

Eine private oder Mirror-Registry konfigurieren

Unternehmensumgebungen und Air-Gapped-Server verwenden häufig eine private NPM-Registry (Verdaccio, Nexus, Artifactory):

“`

npm config set registry "https://your-private-registry.example.com/"

“`

So authentifizieren Sie sich gegenüber einer privaten Registry:

“`

npm login –registry=https://your-private-registry.example.com/

“`

Für Scoped-Pakete (z. B. `@mycompany/*`) können Sie nur diesen Scope an eine private Registry weiterleiten, während die öffentliche Registry unverändert bleibt:

“`

npm config set @mycompany:registry "https://your-private-registry.example.com/"

“`

Einen HTTP-Proxy konfigurieren

Wenn Ihr Windows-Rechner hinter einem Unternehmens-Proxy sitzt:

“`

npm config set proxy "http://proxy.company.com:8080"

npm config set https-proxy "http://proxy.company.com:8080"

“`

Alle aktuellen Einstellungen prüfen

“`

npm config list

npm config list –json

“`

Das Flag `–json` gibt maschinenlesbare Konfiguration aus, nützlich für Scripting und CI/CD-Pipeline-Diagnosen.

Nützliche NPM-Konfigurationsreferenz

KonfigurationsschlüsselStandardwertZweck
`prefix``%APPDATA%npm`Installationsort für globale Pakete
`registry``https://registry.npmjs.org/`Paketquell-Registry
`cache``%APPDATA%npm-cache`Lokales Paket-Cache-Verzeichnis
`save-exact``false`Exakte Versionen in `package.json` fixieren
`fund``true`Funding-Meldungen nach der Installation anzeigen
`audit``true`Sicherheits-Audit bei der Installation ausführen

Schritt 6: Eine Node.js-Anwendung erstellen und ausführen

Das Projekt initialisieren

“`

mkdir my-node-app

cd my-node-app

npm init -y

“`

`npm init -y` generiert eine `package.json` mit Standardwerten, die aus dem Verzeichnisnamen und Ihrer NPM-Benutzerkonfiguration abgeleitet werden. Die `package.json`-Datei ist das Manifest Ihrer Anwendung — sie definiert den Einstiegspunkt, Skripte, Abhängigkeiten und Metadaten.

Einen einfachen HTTP-Server erstellen

Erstellen Sie `app.js` im Projektverzeichnis:

“`javascript

// app.js

const http = require('http');

const hostname = '127.0.0.1';

const port = 3000;

const server = http.createServer((req, res) => {

res.statusCode = 200;

res.setHeader('Content-Type', 'text/plain');

res.end('Hello, World!n');

});

server.listen(port, hostname, () => {

console.log(`Server running at http://${hostname}:${port}/`);

});

“`

Führen Sie ihn aus:

“`

node app.js

“`

Navigieren Sie in Ihrem Browser zu `http://127.0.0.1:3000/`. Sie sollten `Hello, World!` sehen.

Technischer Hinweis: Node.js verwendet eine Single-Threaded-Event-Loop, die von libuv für I/O-Operationen unterstützt wird. Der `http.createServer`-Callback wird bei jeder eingehenden Anfrage ausgelöst, ohne die Loop zu blockieren. Diese Architektur macht Node.js hocheffizient für I/O-gebundene Workloads, aber ungeeignet für CPU-intensive Aufgaben ohne Worker-Threads oder Child-Prozesse.

Das Express-Framework hinzufügen

Express ist das De-facto-Standard-HTTP-Framework für Node.js und bietet Routing, Middleware-Unterstützung und eine saubere Request/Response-Abstraktion:

“`

npm install express

“`

Dies installiert Express lokal (in `node_modules/`) und trägt es als Abhängigkeit in `package.json` ein. Aktualisieren Sie `app.js`:

“`javascript

const express = require('express');

const app = express();

const port = 3000;

app.get('/', (req, res) => {

res.send('Hello from Express!');

});

app.listen(port, () => {

console.log(`Server running at http://localhost:${port}`);

});

“`

“`

node app.js

“`

Besuchen Sie `http://localhost:3000/`, um die Antwort zu bestätigen.

`node_modules` und `.gitignore` verstehen

Das `node_modules`-Verzeichnis kann Hunderte von Megabytes an Dateien enthalten. Committen Sie es niemals in die Versionskontrolle. Erstellen Sie eine `.gitignore`-Datei:

“`

node_modules/

.env

“`

Mitarbeiter und Deployment-Pipelines stellen Abhängigkeiten durch Ausführen von `npm install` wieder her, das `package.json` und `package-lock.json` liest, um den exakten Abhängigkeitsbaum zu reproduzieren.

Schritt 7: Pakete verwalten — lokal vs. global

Das Verständnis des Unterschieds zwischen lokaler und globaler Paketinstallation ist eine der häufigsten Verwirrungsquellen für Node.js-Einsteiger.

BereichInstallationsbefehlSpeicherortAnwendungsfall
**Lokal**`npm install <pkg>``./node_modules/`Anwendungsabhängigkeiten
**Lokal Dev**`npm install –save-dev <pkg>``./node_modules/`Build-Tools, Test-Runner
**Global**`npm install -g <pkg>``%APPDATA%npm`CLI-Tools (z. B. `nodemon`, `pm2`)

Grundregel: Wenn ein Paket ein Kommandozeilen-Tool bereitstellt, das Sie überall verfügbar haben möchten (z. B. `nodemon`, `eslint`, `typescript`), installieren Sie es global. Wenn es eine Bibliothek ist, die Ihre Anwendung mit `require()` oder `import` importiert, installieren Sie sie lokal.

Anwendungen in der Produktion mit PM2 ausführen

Für jede Node.js-Anwendung, die auf einem Server bereitgestellt wird — ob auf einer VPS Hosting-Instanz oder einem Dedicated Server — ist das direkte Ausführen von `node app.js` unzureichend. Der Prozess wird beendet, wenn das Terminal geschlossen wird oder eine unbehandelte Ausnahme auftritt.

PM2 ist der Standard-Prozessmanager für Node.js in der Produktion:

“`

npm install -g pm2

pm2 start app.js –name "my-app"

pm2 startup

pm2 save

“`

`pm2 startup` generiert einen Befehl, um PM2 so zu konfigurieren, dass Ihre Anwendung beim Systemneustart automatisch neu gestartet wird. `pm2 save` speichert die aktuelle Prozessliste dauerhaft.

Schritt 8: Sicherheitshärtung und Audit

Einen Abhängigkeits-Audit durchführen

“`

npm audit

“`

NPM gleicht Ihre installierten Pakete mit der GitHub Advisory Database ab. Alle bekannten Schwachstellen werden mit Schweregraden (niedrig, mittel, hoch, kritisch) und Behebungspfaden gemeldet.

“`

npm audit fix

“`

Dies aktualisiert automatisch anfällige Pakete auf die nächste nicht-brechende gepatchte Version. Bei Breaking Changes überprüfen Sie die Ausgabe und aktualisieren Sie manuell.

Abhängigkeitsversionen fixieren

In `package.json` verwendet NPM standardmäßig semantische Versionierungsbereiche (`^1.2.3` erlaubt Minor- und Patch-Updates). In der Produktion fixieren Sie exakte Versionen, um Supply-Chain-Überraschungen zu vermeiden:

“`

npm config set save-exact true

“`

Oder ersetzen Sie `^`-Präfixe manuell durch exakte Versionsstrings in `package.json` und committen Sie die `package-lock.json`-Datei.

NPM nicht als Administrator ausführen

Das Ausführen von `npm install -g` mit erhöhten Rechten schreibt Dateien, die dem Administrator-Konto gehören, was bei nachfolgenden nicht-erhöhten Operationen zu Berechtigungsfehlern führen kann. Konfigurieren Sie ein benutzereigenes globales Präfix (siehe Schritt 5), um die Notwendigkeit erhöhter Rechte vollständig zu eliminieren.

Node.js-Anwendungen auf einem Server bereitstellen

Die lokale Entwicklung ist nur die erste Stufe. Das Produktions-Deployment bringt zusätzliche Anforderungen mit sich: Prozessverwaltung, Reverse-Proxying, TLS-Terminierung und Verwaltung von Umgebungsvariablen.

Ein typischer Produktions-Stack auf einer Linux-VPS Hosting-Instanz kombiniert Node.js mit Nginx als Reverse-Proxy. Nginx übernimmt die TLS-Terminierung (mit Zertifikaten von einem Anbieter wie SSL Certificates) und leitet Anfragen an den Node.js-Prozess weiter, der auf einem lokalen Port lauscht.

Für Teams, die eine verwaltete Control-Panel-Umgebung bevorzugen, bietet VPS mit cPanel Node.js-Anwendungsverwaltung über die cPanel-Oberfläche und vereinfacht das Deployment ohne direkte SSH-Konfiguration.

Umgebungsspezifische Konfigurationen (Datenbank-Zugangsdaten, API-Schlüssel, Port-Nummern) sollten niemals fest kodiert werden. Verwenden Sie eine `.env`-Datei mit dem `dotenv`-Paket:

“`

npm install dotenv

“`

“`javascript

require('dotenv').config();

const port = process.env.PORT || 3000;

“`

Entscheidungsmatrix: Wann welche Installationsmethode verwendet werden sollte

SzenarioEmpfohlener Ansatz
Einzelnes Projekt, Node.js lernenMSI-Installer, LTS-Version
Mehrere Projekte mit unterschiedlichen Node.js-Versionennvm-for-windows
CI/CD-Pipeline auf Windows ServerMSI-Installer oder Chocolatey (`choco install nodejs-lts`)
Produktions-Linux-ServerPaketmanager (apt/yum) oder nvm
Containerisierte AnwendungOffizielles `node` Docker-Image
Air-Gapped-UnternehmensumgebungOffline-MSI + private NPM-Registry (Verdaccio)

Wichtigste technische Erkenntnisse

  • Installieren Sie für Produktions- und Team-Umgebungen immer die LTS-Version. Verwenden Sie das Current-Release nur, wenn ein bestimmtes V8- oder Node.js-API-Feature erforderlich ist.
  • Verwenden Sie nvm-for-windows in jeder Umgebung, in der mehrere Node.js-Versionen koexistieren müssen.
  • Überprüfen Sie die SHA-256-Prüfsumme des Installers vor der Ausführung.
  • Ändern Sie das globale NPM-Präfix in ein benutzereigenes Verzeichnis, um Berechtigungsfehler zu vermeiden und die Notwendigkeit erhöhter Rechte zu eliminieren.
  • Committen Sie `node_modules/` niemals in die Versionskontrolle. Committen Sie immer `package-lock.json`.
  • Führen Sie `npm audit` nach jedem `npm install` in Produktions-Pipelines aus.
  • Verwenden Sie PM2 für die Prozessverwaltung bei jeder Server-Bereitstellung — führen Sie `node app.js` niemals direkt in der Produktion aus.
  • Terminieren Sie TLS auf der Reverse-Proxy-Ebene (Nginx, Caddy) anstatt im Node.js-Prozess für bessere Performance und Zertifikatsverwaltung.
  • Speichern Sie Geheimnisse in Umgebungsvariablen, die über `dotenv` geladen werden, niemals im Quellcode.

Häufig gestellte Fragen

Was ist der Unterschied zwischen Node.js LTS und Current unter Windows?

LTS-Versionen erhalten Sicherheits- und Stabilitäts-Patches für 30 Monate und tragen gerade Hauptversionsnummern (18, 20, 22). Current-Versionen enthalten die neuesten Sprach- und Laufzeit-Features, werden aber nur sechs Monate lang unterstützt, bevor sie zu LTS wechseln oder eingestellt werden. Für Produktions-Windows-Deployments verwenden Sie immer LTS.

Warum schlägt `npm install -g` unter Windows mit einem Berechtigungsfehler fehl?

Das Standard-Globalpräfix (`C:Users<username>AppDataRoamingnpm`) verfügt aufgrund von UAC-Richtlinien oder früheren als Administrator ausgeführten Installationen gelegentlich nicht über Schreibberechtigungen. Die Lösung besteht darin, entweder das Terminal als Administrator auszuführen (langfristig nicht empfohlen) oder das globale Präfix mit `npm config set prefix "C:yourpath"` auf ein Verzeichnis umzukonfigurieren, das Ihrem Benutzerkonto gehört.

Kann ich mehrere Node.js-Versionen gleichzeitig unter Windows ausführen?

Ja, mit nvm-for-windows. Installieren Sie es und verwenden Sie dann `nvm install <version>` und `nvm use <version>`, um die aktive Laufzeitumgebung zu wechseln. Jede Version pflegt ihr eigenes globales Paketverzeichnis und verhindert so versionsübergreifende Konflikte.

Was ist `package-lock.json` und sollte ich es committen?

`package-lock.json` ist eine exakte, deterministische Aufzeichnung des gesamten Abhängigkeitsbaums, der während `npm install` aufgelöst wurde. Es stellt sicher, dass jeder Entwickler und jeder CI/CD-Lauf identische Paketversionen installiert. Committen Sie es immer in die Versionskontrolle und bearbeiten Sie es niemals manuell.

Wie führe ich eine Node.js-Anwendung beim Windows-Start automatisch aus, ohne einen Server?

Für Entwicklungsrechner verwenden Sie PM2 mit `pm2 startup` und `pm2 save`. Für die Windows-Service-Integration umhüllen Tools wie `node-windows` einen Node.js-Prozess als nativen Windows-Dienst und ermöglichen die Verwaltung über das Services-MMC-Snap-In sowie den automatischen Neustart bei Fehler oder Neustart.

15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen