Node.js运行HTTP服务脚本时Windows CMD控制台无输出
问题根因
执行node hello.js后控制台无输出属于正常现象,和加载速度、端口配置无关,是两个代码逻辑的认知错误导致的:
- 脚本运行后HTTP服务仅会启动并进入端口监听状态,你的代码没有写服务启动成功的回调日志,控制台不会主动打印内容
- 你监听的
connect事件仅在客户端发起HTTP CONNECT代理隧道请求时才会触发,普通浏览器访问、接口调用的常规HTTP请求不会命中这个事件回调,你写的Connected!日志自然不会输出

验证方法
保持当前运行脚本的控制台窗口不要关闭,直接打开浏览器访问http://127.0.0.1:3000,页面能正常显示Hello world就证明服务运行完全正常,不存在端口占用、配置错误问题。
修正方案
如果需要控制台打印启动提示、请求日志,替换为以下代码即可:
const http = require('http'); const host = '127.0.0.1'; const port = 3000; const server = http.createServer(function(request, response) { // 常规请求进入时打印日志 console.log(`收到请求: ${request.method} ${request.url}`); response.writeHead(200, { 'Content-Type': 'text/html' }); response.end('Hello world'); // listen的第三个回调是服务启动成功后触发的,在这里加启动日志 }).listen(port, host, () => { console.log(`服务启动成功,访问地址: http://${host}:${port}`); }); server.on('connect', function(req) { console.log(req.url); console.log('收到CONNECT代理请求'); }) server.on('error', function(e) { // 仅端口占用、权限不足等异常情况才会触发error事件打印日志 console.log('服务异常:', e); })
补充说明
- 如果执行脚本后直接抛出
EADDRINUSE错误,才代表3000端口被其他程序占用,换一个未被使用的端口即可 - Windows控制台默认开启快速编辑模式,如果鼠标点击控制台窗口选中了内容,进程会被暂停,看起来像卡住,按回车键即可恢复运行
内容的提问来源于stack exchange,提问作者HAMMASI
相关产品推荐
相关产品推荐

