2013-02-14 162 views
8

我在一个名为server.js的文件中有以下代码。运行node.js代码只显示一个节点标识符

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/'); 

我使用命令提示符和naviage文件夹所在的文件recides,然后运行命令

node server.js 

但我没有得到预期的输出。相反,我得到

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

注:我已经有节点安装在我的机器,它工作正常。

+0

当你'节点-v'会发生什么? – Trevor 2013-02-14 19:22:57

+0

当你进入'http://127.0.0.1:8124 /'时会发生什么? – 2013-02-14 19:24:12

+0

@Trevor:节点-v无法正常工作..我获得相同的输出 – Muthukumar 2013-02-14 19:48:17

回答

14

当我试图运行cordova命令时出现这种情况。解决步骤:

的Windows

  1. 在CMD提示符下,键入 “里的节点”。正如迈克尔所说,这显示 您可能的罪魁祸首,您有2个nodejs EXE安装在您的计算机上 。
  2. 导航到开始>计算机>右键单击属性>高级系统设置
  3. 在高级选项卡,选择环境变量
  4. 在系统变量中,选择“路径”变量
  5. 查找的NodeJS EXE,通常是“C :\ Program Files(x86)\ nodejs \“
  6. 将其剪切并粘贴到”路径“变量的开头。确保 路径之间用“;”隔开
  7. 打开一个新的CMD提示,并尝试科尔多瓦再次
+1

因为我确实发布了初始解决方案[这里](http://stackoverflow.com/a/24456503/428628),我认为你可以做得更好,以表彰我的信任,也许将你的解决方案作为评论添加到我的。我提到这一点是因为你看起来很新,可能不熟悉SO礼仪。 – 2015-06-22 18:51:17

+0

不幸的是,改变'PATH'会破坏Harvest SCM。因此,如果您需要使用Node.js *和*检入您的代码以像我一样收获,那么您注定会失败。请参阅[我的答案](http://stackoverflow.com/a/30979722/1461424)以获得更好的解决方案。 – Krumia 2017-04-11 04:11:19

0

我想你运行的是错误的节点命令。 尝试查找或重新下载nodejs安装并将其作为第一个目录添加到您的路径中。如果您正在运行linux或unix,则可以尝试“哪个节点”来查看正在运行的内容。 注意,在某些情况下,node.js的可执行文件名为如此的NodeJS你可能想尝试 nodejs server.js以及

+0

它在节点0.6中更新(不确定)从'node'到'nodejs' – Mustafa 2013-02-14 19:38:43

+0

Def一个路径问题。尼斯。我不知道'nodejs'工作。 – Trevor 2013-02-14 19:59:11

0

我用Node.js的命令提示符,而不是Windows默认的命令提示符,它为我工作。不知道为什么它在Windows默认命令提示符下不起作用。

2

这是旧的,但我遇到了同样的问题。完全相同的消息(当然与我的机器名称)。问题是在路径上有另一个可执行文件,在C:\Program Files (x86)\CA\SharedComponents\PEC\bin。我在一台Windows机器上运行,因此运行where node显示路径中存在两个冲突的“节点”可执行文件。

要解决这个问题,我只是从PATH环境变量中删除了CA目录。

+0

不幸的是,改变'PATH'变量破坏了Harvest SCM。 – Krumia 2015-06-22 12:14:15

-1

我也有同样的问题,运行 - 而定义窗口的路径使用以下参数

的Windows:

set NODE_PATH=C:\nodejs 

OR

设置nodej的环境变量

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

(追加路径包含此字符串“C:\的NodeJS”)

+0

这是如何工作的? – 2017-04-24 20:39:06

8

Harvest SCM被安装在系统上会出现这种情况。它有一个名为node.exe的可执行文件,位于<Program Files (x86)>\CA\SharedComponents\PEC\bin(其中<Program Files (x86)>是您的x86程序文件文件夹)。此路径存在于PATH变量之前到Node.js的路径node.exe

您可以执行以下两件事情可以做,以解决这个问题的:

  1. 删除<Program Files (x86)>\CA\SharedComponents\PEC\binPATH环境变量。
  2. <Program Files (x86)>\nodejs添加到PATH环境变量的开头(这是从djrpascu开始)。

你可以做得更好!

有两个问题与上面的方法:

  1. 你打破收获SCM的功能。
  2. 如果您没有升级特权来更改PATH,则说明您已超出选项。 (感谢@Glats

所以我创造了这个小批处理文件,并把它放在一个目录,我有几个其他个人脚本(这个目录是我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% 

这时你想运行的Node.js接下来的时间,而不是命令提示符,你"Run..." command打开新的脚本。

视窗 + - [R

nodecmd

一个命令提示将出现。您可以使用此命令提示符运行node而不麻烦。

说明

该位将删除PATH变量收获的可执行文件的路径:

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

,这增加了Node.js的的路径:

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

结果是包含字符串原始路径变量减去收获路径节点的路径。它在当前批处理文件的范围内设置为PATH变量。

注:您可能需要更改路径的脚本,以适应软件的安装文件夹在您的系统)。

下一行,start %ComSpec%启动命令提示符。此时,PATH变量被修改。使用修改的环境变量,您可以在此新的命令提示符中运行节点。 环境变量修改不会影响系统的其他部分,确保Harvest SCM软件不中断地运行。

+1

这是一个很好的解决方案。我建议增加一点你的方法做的更清晰,这是通过用临时修复PATH env var的包装脚本执行它来“修复”节点。从你的回答中不清楚你需要始终从这个新的包装中启动节点,并且PATH变化不是永久的,这是不打破Harvest的关键。 – 2015-06-22 18:55:16

+0

谢谢@MichaelR,我会尝试将您的反馈意见写入答案。 – Krumia 2015-06-22 18:59:58

+1

这一个为我工作,因为我没有提升特权来改变我的环境路径 – Glats 2016-10-26 12:49:59

0

不要通过从路径中删除Harvest SCM来破坏它。试试这个,打开你的Windows命令行(cmd),然后传递下面的nodejs批处理文件,以便它将你的命令行设置为nodejs环境。在那里享受节点命令。

C:> “C:\ Program Files文件\的NodeJS \ nodevars.bat”

0

丰收冲突是我确切的问题。感谢发布。还要添加,请在再次尝试init之前检查两个路径变量以确认并重新启动终端。

0

我遇到了同样的问题,只是改变了来自Harvest的node.exe文件的名称。这并没有打破Harvest的任何事情,我可以继续使用它。

更改丰收的命令名称node_.exe

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