2013-02-14 6 views
8

Ich habe den folgenden Code in einer Datei namens server.js.Der laufende node.js-Code zeigt nur eine Knoten-ID an

var http = require('http'); 

http.createServer(function (request, response) { 
    response.writeHead(200, {'Content-Type': 'text/plain'}); 
    response.end('Hello World\n'); 
}).listen(8124); 

console.log('Server running at http://127.0.0.1:8124/'); 

Ich verwende die Eingabeaufforderung und naviage in den Ordner, in dem die Datei recides und dann der Lauf der Befehl

node server.js 

Aber ich habe nicht die erwartete Ausgabe erhalten. Stattdessen erhalte ich

The node identifier for {My Machine Name} is v2hrfnqaj. 

Hinweis: Ich habe bereits Knoten in meiner Maschine installiert und es funktionierte gut.

+0

was passiert, wenn Sie 'Knoten -V' tun? – Trevor

+0

Was passiert, wenn Sie zu "http: //127.0.0.1: 8124 /" wechseln? –

+0

@Trevor: node -v funktioniert nicht .. Ich bekomme die gleiche Ausgabe – Muthukumar

Antwort

14

Erhalte dies, als ich versuchte, cordova-Befehle auszuführen. Schritte zu beheben:

Windows-

  1. In CMD Prompt "wo der Knoten". Wie Michael erwähnt, zeigt dies Sie die wahrscheinlichste Ursache, dass Sie 2 Nodejs EXEs auf Ihre Maschine installiert haben.
  2. Navigieren Sie Start> Computer> Rechtsklick auf Eigenschaften> Erweiterte Systemeinstellungen
  3. Unter der Registerkarte Erweitert die Option Umgebungsvariablen
  4. unter Systemvariablen, wählen Sie Variable "Path"
  5. Finden NodeJS EXE, in der Regel „C : \ Programme (x86) \ nodejs \ "
  6. Ausschneiden und fügen Sie dies an den Anfang der Variable" Path ".Stellen Sie sicher, dass die Pfade durch ein ";" getrennt sind.
  7. Öffnen Sie eine neue CMD-Eingabeaufforderung und versuchen cordova wieder
+1

Seit ich die erste Lösung [hier] gepostet habe (http://stackoverflow.com/a/24456503/428628), denke ich, du hättest ein bisschen besser sein können, um mir zu danken, vielleicht deine Lösung als Kommentar zu meiner hinzuzufügen . Ich erwähne das, weil du SO so ziemlich neu erscheinst und vielleicht mit SO-Etikette nicht vertraut bist. –

+0

Leider wird das Ändern von 'PATH' Harvest SCM unterbrechen. Wenn Sie also mit Node.js * arbeiten und Ihren Code wie ich bei Harvest einchecken müssen, sind Sie verloren. Eine bessere Lösung finden Sie unter [meine Antwort] (http://stackoverflow.com/a/30979722/1461424). – Krumia

0

Ich denke, Sie führen den falschen Knoten Befehl. Versuchen Sie, Ihre nodejs-Installation ausfindig zu machen oder erneut herunterzuladen, und fügen Sie sie Ihrem Pfad als erstes Verzeichnis hinzu. Wenn Sie Linux oder Unix ausführen, können Sie versuchen, 'which node' zu sehen, was gerade ausgeführt wird. Beachten Sie, dass in einigen Fällen die node.js ausführbare NodeJS genannt wird, so dass Sie möchten nodejs server.js auch

+0

Es wird in Knoten 0.6 aktualisiert (nicht sicher) von 'node' zu' nodejs' – Mustafa

+0

Def ein Pfadproblem Nett. Ich wusste nicht, dass 'nodejs' funktioniert. – Trevor

0

ich die node.js-Eingabeaufforderung verwendet, um zu versuchen, statt der Windows-Standardeingabeaufforderung, und es funktionierte für mich . Wusste nicht, warum es in der Windows-Standardeingabeaufforderung nicht funktioniert hat.

2

Das ist alt, aber ich stieß auf das gleiche Problem. Genau dieselbe Nachricht (natürlich mit meinem Rechnernamen). Das Problem bestand darin, dass auf dem Pfad unter C:\Program Files (x86)\CA\SharedComponents\PEC\bin ein ausführbarer Knoten ausführbar war. Ich bin auf einem Windows-Rechner, so dass where node ausgeführt die zwei widersprüchlichen "Knoten" ausführbare Dateien im Pfad angezeigt.

Um das Problem zu beheben, habe ich nur das CA-Verzeichnis aus der Umgebungsvariablen PATH entfernt.

+0

Das Ändern der 'PATH'-Variable bricht den Harvest SCM. – Krumia

-1

ich auch mit dem gleichen Problem ausgeführt wurde - während den Pfad für Fenster definieren, verwenden unter Parameter

Fenster:

set NODE_PATH=C:\nodejs 

OR

Setzen Sie die Umgebungsvariable für nodejs

NODE_PATH=C:\nodejs 
Path= C:\nodejs 

(append der Pfad enthalten diese Zeichenfolge „c: \ NodeJS“)

+0

Wie funktioniert das? –

8

Dies geschieht, wenn Harvest SCM auf Ihrem System installiert ist. Es hat eine ausführbare Datei mit dem Namen node.exe unter <Program Files (x86)>\CA\SharedComponents\PEC\bin (<Program Files (x86)> ist Ihr x86-Programmdateien-Ordner). Dieser Pfad ist in Ihrer PATH Variablen vor der Pfad zu Node.js node.exe vorhanden.

Sie können eines der folgenden zwei Dinge tun Sie, dieses Problem zu überwinden tun können:

  1. entfernen <Program Files (x86)>\CA\SharedComponents\PEC\bin aus PATH Umgebungsvariable.
  2. Add/<Program Files (x86)>\nodejs zu Beginn des PATH Umgebungsvariable bewegen (Dies ist die currently accepted answer von djrpascu).

Sie können es besser machen!

Es gibt zwei Probleme mit den oben genannten Ansätze:

  1. Sie brechen Ernte SCM-Funktionalität.
  2. Wenn Sie keine erhöhten Rechte zum Ändern von PATH haben, haben Sie keine Optionen mehr. (Danke @Glats)

Also habe ich diese kleine Batch-Datei, und legen Sie sie in einem Verzeichnis, in dem ich mehrere andere persönliche Skripte haben (dieses Verzeichnis in meinem PATH). Here's the gist for the script.

nodecmd.bat

@echo off 

set path=%path:C:\Program Files (x86)\CA\SharedComponents\PEC\bin;=%;C:\Program Files (x86)\nodejs; 

start %ComSpec% 

Dann wird das nächste Mal, wenn Sie wollen Node.js, statt Eingabeaufforderung auszuführen, öffnen Sie das neue Skript mit "Run..." command.

Windows- + R

nodecmd

Eine Eingabeaufforderung angezeigt wird.Sie können diese Eingabeaufforderung verwenden, um ohne Probleme node auszuführen.

Erklärung

Dieses Bit löscht die Ernte des ausführbaren Pfad von PATH Variable:

%path:C:\Program Files (x86)\CA\SharedComponents\PEC\bin;=%; 

Davon profitiert der Weg des Node.js:

set path=...;C:\Program Files (x86)\nodejs; 

Das Ergebnis ist eine Zeichenfolge, die enthält die ursprüngliche PATH-Variable minus Harvest's Pfad, plus Knotenpfad. Und es wird als PATH-Variable im Bereich der aktuellen Batch-Datei festgelegt.

Hinweis: Sie können den Pfad der im Skript ändern, um Software-Installationsordner in Ihrem System anpassen).

Nächste Zeile, start %ComSpec% startet eine Eingabeaufforderung. Zu diesem Zeitpunkt ist die PATH-Variable geändert. Mit geänderten Umgebungsvariablen können Sie Knoten innerhalb dieser neuen Eingabeaufforderung ausführen. Die Änderung der Umgebungsvariablen wirkt sich nicht auf den Rest des Systems aus und stellt sicher, dass die Harvest SCM-Software ohne Unterbrechung ausgeführt wird.

+1

Dies ist eine gute Lösung. Ich würde empfehlen, ein wenig mehr Klarheit darüber zu geben, was Ihr Ansatz macht, nämlich den "Fix" -Knoten, indem Sie ihn mit einem Wrapper-Skript ausführen, das vorübergehend den PATH-env var behebt. Aus Ihrer Antwort geht nicht klar hervor, dass Sie den Knoten immer von diesem neuen Wrapper aus starten müssen und dass die PATH-Änderung nicht permanent ist. Dies ist der Schlüssel, um Harvest nicht zu brechen. –

+0

Danke @MichaelR, ich werde versuchen, Ihr Feedback in die Antwort zu bekommen. – Krumia

+1

dieser eine funktionierte für mich, weil ich keine erhöhten Privilegien habe, um meinen Umgebungsweg zu ändern – Glats

0

Brechen Sie Ihren Harvest SCM nicht, indem Sie ihn aus dem Pfad entfernen. Versuchen Sie diese, öffnen Sie Ihre Windows-Befehlszeile (cmd) und übergeben Sie dann die folgende nodejs Batch-Datei, so dass es Ihre Befehlszeile zu Nodejs-Umgebung festlegen wird. Viel Spaß mit den Knotenbefehlen.

C:> "C: \ Programme \ NodeJS \ nodevars.bat"

0

The Harvest Konflikt war mein genaues Problem. Danke fürs Schreiben. Überprüfen Sie außerdem beide Path-Variablen, um das Terminal zu bestätigen und neu zu starten, bevor Sie das Init erneut versuchen.

0

Ich konfrontiert das gleiche Problem und änderte einfach den Namen node.exe Datei von Harvest. Das hat nichts von Harvest gebrochen und ich kann weiter damit arbeiten.

Ändern Sie den Befehl des Ernte Namen node_.exe:

ren "C:\Program Files (x86)\CA\SharedComponents\PEC\bin\node.exe" "C:\Program Files (x86)\CA\SharedComponents\PEC\bin\node_.exe" 
Verwandte Themen