node.js的简单服务器测试不起作用,没有输出[重复]
Posted
技术标签:
【中文标题】node.js的简单服务器测试不起作用,没有输出[重复]【英文标题】:Simple server test for node.js not working, no output [duplicate] 【发布时间】:2019-07-15 23:37:42 【问题描述】:我是 node.js 的新手,我想知道一般测试以下类型代码的最佳方法。现在,我将这一切作为 netbeans node.js 项目中的一个文件来完成。我没有得到任何输出,输出应该是“HELLO SERVER”。
它通常编译没有错误,但没有输出,其他时候它说
"throw er; // 未处理的 'error' 事件 Error: listen EADDRINUSE :::8000"
我已经知道这个拒绝意味着什么,我认为当我点击两次运行时它就是这样做的,因为那个端口被第一次运行占用了。
我已经尝试了多个端口,它可以工作但没有输出......
我应该以其他方式对此进行测试吗?为什么没有输出?输出应该是“HELLO SERVER” 谢谢。
var http = require("http");
http.createServer(function (request, response)
response.writeHead(200, "Content-Type": "text/plain");
request.on("data", function (chunk)
response.write(chunk.toString().toUpperCase());
);
request.on("end", function ()
response.end();
);
).listen(8000);
var http = require("http");
var request = http.request(
hostname: "localhost",
port: 8000,
method: "POST"
, function (response)
response.on("data", function (chunk)
process.stdout.write(chunk.toString());
);
);
request.end("Hello Server");
【问题讨论】:
【参考方案1】:这意味着您的端口8000
已被另一个进程使用。该进程可能是您的服务器的旧实例仍在运行(未正确退出)仍在占用端口。
尝试使用端口8000
查找进程并杀死它
在 Linux 上
fuser -k 8000/tcp
在 Windows 上
netstat -ano | findstr :8000
// Find the value of the PID (last column to the right)
taskkill /PID pid_value /F
【讨论】:
【参考方案2】:我测试了您的代码,服务器启动得非常好。 "throw er; // Unhandled 'error' event Error: listen EADDRINUSE :::8000"
表示您启动服务器的端口已经有服务器或其他进程在其上运行。更改端口号或停止服务
var http = require("http");
http.createServer(function(request, response)
response.writeHead(200,
"Content-Type": "text/plain"
);
request.on("data", function(chunk)
response.write(chunk.toString().toUpperCase());
);
request.on("end", function()
response.end();
);
).listen(3000);
var http = require("http");
var request = http.request(
hostname: "localhost",
port: 3000,
method: "POST"
, function(response)
response.on("data", function(chunk)
process.stdout.write(chunk.toString());
);
);
request.end("Hello Server");
【讨论】:
在您发布的代码中,它侦听的端口与请求的端口不同,对吗?我已经查看了拒绝的含义,有时它在没有拒绝的情况下运行,但只是没有像现在这样显示输出。我还将端口切换到 0,使其查找任何打开的端口并且不显示输出文本....这个问题不仅仅是询问拒绝意味着什么,而是询问一般测试此类事情的最佳方法为什么没有输出... @evanr123 谢谢,错过了。如果这是您的问题,您应该编辑它或重新要求它指定您理解错误并想知道如何测试它。尝试重新启动您的机器或从终端清除所有端口,看看您是否仍然收到错误。 我会尝试重新启动。所以当你运行它时,你得到的输出是“HELLO SERVER”?还是刚开始时没有输出.... 是的,我得到了输出HELLO SERVER
,一切都按预期工作。您的代码很好,该端口正被另一个进程使用。
只想说,如果您在重新启动后仍然遇到问题并且您尝试使用 8001、8002 和其他明显未使用的端口等端口,那么它可能不是节点或您的代码的问题。可能是网络问题?您的路由器正在使用端口?以上是关于node.js的简单服务器测试不起作用,没有输出[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Node.js WebStorm 远程调试不起作用(没有 SSH 隧道)
使用 nodemailer 通过 Node.js 发送电子邮件不起作用