Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基本Node.js示例不适用于Windows 7_Windows_Node.js_Windows 7 - Fatal编程技术网

基本Node.js示例不适用于Windows 7

基本Node.js示例不适用于Windows 7,windows,node.js,windows-7,Windows,Node.js,Windows 7,我从v0.6.6安装了node.js。我使用的是32位Windows 7 我一直在网上浏览各种各样的图坦卡门,并希望在这样做的同时进行实验,但我似乎无法让node.js正常工作。节点将运行my.js文件,但来自浏览器的任何请求都会超时 下面是一个典型的Hello World示例,它不起作用: var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type

我从v0.6.6安装了node.js。我使用的是32位Windows 7

我一直在网上浏览各种各样的图坦卡门,并希望在这样做的同时进行实验,但我似乎无法让node.js正常工作。节点将运行my.js文件,但来自浏览器的任何请求都会超时

下面是一个典型的Hello World示例,它不起作用:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337);
将我的浏览器指向127.0.0.1:1337或localhost:1337不起作用。来自浏览器的请求超时。我也试过听(1337,'0.0.0.0')和听(1337,'127.0.0.1')

我知道服务器正在运行;如果我按住CTRL+C并停止节点,浏览器会立即返回ERR\u CONNECTION\u RESET

我还尝试运行了以下要点中的代码,但无法运行:。我最终得到了控制台输出“侦听”,然后就没有其他输出了

此外,我尝试了不同的端口,我的防火墙是通过关闭

netsh firewall set opmode mode=disable
我尝试完全禁用防火墙,服务停止。如果我使用netstat-noa检查连接,我可以看到node为浏览器打开了一堆连接,所有连接都处于关闭等待状态。所以看起来连接正在发生,但node.js就是不起作用

应该由请求启动的回调函数永远不会执行——我在各个区域中添加了一些console.log语句,它们都会执行,除了回调中的任何语句

我卸载、重新安装、尝试了几个以前的版本、重新启动了我的机器……什么都没有

感谢您的帮助


更新:我几乎要放弃了。我已经尝试了我所能想到的一切,结果是在VirtualBox中的Ubuntu实例中运行node.js比抓紧稻草更容易

我刚试过,它对我有效。确保您没有使用防火墙阻止节点

我使用的是32位Windows 7

您使用的是什么版本的Windows 7?家庭高级、专业、终极

在使用npm安装nodejs模块时,上面的一个线程提到了类似的症状,评论似乎将其缩小到由Windows7 Professional引起的范围。32/64位似乎并不重要

我既有您描述的问题,也有npm安装问题,并且运行在64位Windows7 Professional上

使用(npm线程中提到的一种解决方法)使我能够解决这两个问题。尽管如此,我想这只是你在VirtualBox中使用Ubuntu的一个Windows-y版本

其他解决方法尝试但未成功:

  • 生成/运行v0.6.6的调试版本
  • 生成/运行v0.6.5的调试版本(实际在启动时崩溃)
  • 在已安装的node.exe上设置各种兼容模式
  • v0.6.5的预打包Windows安装程序

我对这段代码也有同样的问题(此链接中的Http服务器示例:)


我试过Windows7 64位版本,WindowsXP虚拟机,ubuntu虚拟机。。。没有什么!只有在我评论了“request.on”一行之后,它才起作用。你的例子(没有这一行)对我很有用。我使用的是node.js的最新稳定版本(windows或linux版本为v0.10.18)。希望这能帮助有困难的人。

!!!!!!同样的问题也发生在我身上

以下是一个我还没有找到的解决方案:

查看具有高级安全性的Windows防火墙,查看V8 JavaScript事件I/O是否被阻止或出现两次

如果是,请取消阻止它并删除重复的条目。如果安装/卸载/安装nodeJs,将有2个条目


此外,当节点首次运行时,窗口防火墙对话框打开,询问您是否希望允许节点具有防火墙访问权限。如果您按“否”或只是关闭窗口而不询问,它将为V8 JavaScript创建
事件I/O
,并将被阻止。

我遇到了相同的问题,在阅读文档后,我意外地遇到了我认为是解决方案的问题。在我的实例中,我注意到传入的请求正在被传递到节点,但响应从未触发其“结束”事件。因此,在windows中修改传入的防火墙规则似乎与问题无关

因此,http.createServer只接受一个参数——一个应该包含请求和响应参数的函数。请求参数似乎就是问题所在。请求参数是http.incomingMessage的一个实例。这个类只有一个事件类型,但它本身也是Stream.Readable的一个实现,在这里我发现了未触发的“end”事件。实际上,为了测试哪一个事件是第一个未触发的事件,我只为另一种类型的事件(“可读”)添加了一个侦听器,并且只向其中添加了一个console.log行,从而使整个过程正常工作

因此,代码看起来很简单,如下所示:

var http = require("http");
http.createServer(function (request, response) {
    console.log('request');
    request.on('readable', function(){
        console.log('request readable');
    });
    request.on("end", function () {
        console.log('request end');
        response.writeHead(200, {
            'Content-Type': 'text/plain'
        });
        response.end('Hello HTTP!');
    });
}).listen(8080);
上面的代码可以工作,而下面没有“可读”事件侦听器的早期版本永远不会响应:

var http = require("http");
http.createServer(function (request, response) {
    console.log('request');
    request.on("end", function () {
        console.log('request end');
        response.writeHead(200, {
            'Content-Type': 'text/plain'
        });
        response.end('Hello HTTP!');
    });
}).listen(8080);
除了文档中的一点提示外,我不知道为什么这样做有效:

在某些情况下,侦听“可读”事件会导致某些数据丢失 从基础系统读入内部缓冲区,如果 还没有

  • 转到“控制面板\所有控制面板项目\ Windows防火墙\允许” 计划”
  • 单击“允许程序”
  • 从列表中选择nodejs

  • 这为我解决了所有问题

    将端口更改为8000或8080,然后重试。让我知道这是怎么回事。我试过这些端口和其他端口。一定有防火墙,我在一台PC上的W7上安装了Node,在其他两台PC上的Windows XP上安装了Node,它在任何地方都能工作。@Alessio Alex-这就是我的想法。我甚至尝试完全禁用防火墙,服务也停止了。如果我使用netstat-noa检查连接,我可以看到节点有一堆连接
    var http = require("http");
    http.createServer(function (request, response) {
        console.log('request');
        request.on("end", function () {
            console.log('request end');
            response.writeHead(200, {
                'Content-Type': 'text/plain'
            });
            response.end('Hello HTTP!');
        });
    }).listen(8080);