运行node.js代码只显示节点标识符

时间:2013-02-14 19:20:33

标签: node.js

我在名为server.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/');

我使用命令提示符并导航到文件所在的文件夹,然后运行命令

node server.js

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

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

注意:我已经在我的机器上安装了节点,并且工作正常。

9 个答案:

答案 0 :(得分:17)

在我尝试运行cordova命令时得到了这个。解决的步骤:

  1. 在CMD提示符下,键入“where node”。正如迈克尔所说,这表明 你可能是罪魁祸首,你安装了2个nodejs EXE 你的机器。
  2. 导航至开始>计算机>右键单击“属性”>高级系统设置
  3. 在“高级”选项卡下,选择“环境变量”
  4. 在系统变量下,选择“路径”变量
  5. 查找nodejs EXE,通常是“C:\ Program Files(x86)\ nodejs \”
  6. 将其剪切并粘贴到“Path”变量的开头。确保 路径由“;”
  7. 分隔
  8. 打开新的CMD提示并再次尝试使用cordova

答案 1 :(得分:11)

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

更新:您不需要旧答案中列出的详细方案。您只需打开命令提示符并运行:

C:\> nodevars

nodevars.bat是一个小脚本,它基本上与下面描述的相同(但是以更安全的方式)。如果安装了节点,则此脚本应位于路径中。 (如果不确保将C:\Program Files\nodejs添加到您的路径中。但请确保将其追加到最后,以便Harvest SCM不会中断。)

以下所有内容都已过时,但我会留给好奇的读者。

您可以执行以下两项操作中的任何一项来解决此问题:

  1. <Program Files (x86)>\CA\SharedComponents\PEC\bin环境变量中删除PATH
  2. <Program Files (x86)>\nodejs添加/移至PATH环境变量的开头(这是currently accepted answer中的djrpascu)。
  3. 你可以做得更好!

    上述方法存在两个问题:

    1. 您打破了Harvest SCM的功能。
    2. 如果您没有更高权限来更改PATH,那么您就没有选择权。 (谢谢@Glats
    3. 所以我创建了这个小批处理文件,并把它放在我有几个其他个人脚本的目录中(这个目录在我的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变量

      中删除Harvest的可执行文件路径
      %path:C:\Program Files (x86)\CA\SharedComponents\PEC\bin;=%;
      

      这会添加Node.js的路径:

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

      结果是一个字符串,其中包含原始PATH变量减去 Harvest的路径, plus 节点的路径。并在当前批处理文件的范围内设置为PATH变量。

        

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

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

答案 2 :(得分:3)

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

C:&GT; “C:\ Program Files \ nodejs \ nodevars.bat”

答案 3 :(得分:2)

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

要解决此问题,我刚刚从PATH环境变量中删除了CA目录。

答案 4 :(得分:1)

您还可以在环境中确定优先级。 脚步: 计算机->右键单击->属性->高级系统设置->环境变量-> PATH(在系统变量列表中)->编辑->向上移动优先级

答案 5 :(得分:0)

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

答案 6 :(得分:0)

我使用了node.js命令提示符,而不是windows default命令提示符,它对我有用。不知道为什么它在Windows默认命令提示符下不起作用。

答案 7 :(得分:0)

我遇到了同样的问题,只是从Harvest更改了node.exe文件的名称。这并没有破坏Harvest的任何东西,我可以继续使用它。

将Harvest的命令名称更改为node_.exe

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

答案 8 :(得分:-1)

我也遇到了同样的问题 - 同时在参数

下面定义了windows的路径

视窗:

set NODE_PATH=C:\nodejs

OR

为nodejs设置环境变量

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

(追加路径包含此字符串“c:\ nodejs”)