简单的node.js服务器测试无法正常工作,没有输出

时间:2019-02-21 22:57:01

标签: javascript node.js

我对node.js还是很陌生,我想知道一般测试以下类型代码的最佳方法。现在,我在netbeans node.js项目中将其作为一个文件来完成。我没有输出,输出应该是“ HELLO SERVER”。

它通常编译时没有错误,但是没有输出,有时它会显示

“ throw er; //未处理的“错误”事件错误:监听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");

2 个答案:

答案 0 :(得分:0)

这意味着您的端口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

答案 1 :(得分:0)

我测试了您的代码,服务器启动正常。 "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");