node.js本地启动web server服务
直接写一个server.js文件
/*
* 加载【http】模块,该模块由javascript来编写
* 职责是创建 web 服务器 及 处理http相关的任务等
*/
const http = require('http');
const hostname = '127.0.0.1';
const port = 7888;
// 通过 createServer 创建 web服务器
const server = http.createServer((req, res) => {
//req 请求体:获取请求相关的信息(请求来自哪里、是get还是post)
//res 响应体:告诉服务器给请求响应什么内容
console.log(req,res)
// 设置响应的请求头状态码是200
res.statusCode = 200;
// 设置返回的文本类型:纯文本text/plain
res.setHeader('Content-Type', 'application/json'); //序列化后的 JSON 字符串
// 最后给客户端返回 hello world
res.end('Hello World!\n');
});
// 通过 listen 监听端口 的请求
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
然后输入命令行
node server.js
得到报错:127.0.0.1:7888端口已经被占用,需要进行关闭
Error: Command failed: node ./server.js
events.js:174
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use 127.0.0.1:7888
at Server.setupListenHandle [as _listen2] (net.js:1279:14)
at listenInCluster (net.js:1327:12)
at doListen (net.js:1460:7)
at process._tickCallback (internal/process/next_tick.js:63:19)
at Function.Module.runMain (internal/modules/cjs/loader.js:832:11)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
Emitted 'error' event at:
at emitErrorNT (net.js:1306:8)
at process._tickCallback (internal/process/next_tick.js:63:19)
[... lines matching original stack trace ...]
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
at ChildProcess.exithandler (child_process.js:303:12)
at ChildProcess.emit (events.js:182:13)
at maybeClose (internal/child_process.js:961:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:248:5)
Error code: 1
1、Windows加r 打开cmd
2、运行netstat -ano,找到报错信息提示的端口号那一行,记住最后那个数字
netstat -ano
3、tskill加后面的数字
这个端口就可以重新使用了
但是,很坑的是得每一次都必须如此操作,在用完一次后,请求第二次就又会出现这个问题,然后纠结了很久,想在代码中实现杀掉进程,因为这个子进程没有关闭,所以,每次父程序退出后,子进程依然在,所以要想办法退出子程序!
所以我尝试了如下方法:
child.kill('SIGINT')
openExec.kill('SIGINT')
child.kill(signal='SIGTERM')
child_process.kill('signal'='SIGTERM')
server.close()
但是以上方法在我这不起作用,有的直接报错,说is not a function.
最后,看到一个博客,柳暗花明了,taskkill /f /t /im node.exe
我直接杀掉了这个node进程,就不会有问题了,退出父程序时子进程也可以退出了。taskkill /f /t /im node.exe解决问题。