如何修复Node.js代码中请求URL相关逻辑的问题?
问题解决:添加命令行输入交互逻辑
你的代码仅实现了HTTP服务器的基础响应功能,缺少命令行输入交互的逻辑,所以服务器启动后不会触发输入URL的提示。以下是修改后的代码,满足你的需求:
var port = 5050; var http = require('http'); var readline = require('readline'); // 创建命令行输入交互接口 const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let targetUrl = ''; // 存储用户输入的待解析URL var server = http.createServer(function (req, res) { // 忽略favicon和根路径的无效请求日志 if (req.url !== '/favicon.ico' && req.url !== '/') { console.log('Requested URL: ' + req.url); } res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); // 页面根据是否有输入URL返回对应内容 if (targetUrl) { res.write(`解析的URL是:"${targetUrl}"`); } else { res.write('请先在命令行输入待解析的URL'); } res.end(); }); server.listen(port, function () { console.log('Server running at http://localhost:5050/'); // 服务器连接建立后,触发命令行输入提示 rl.question('请输入待解析的URL:', (inputUrl) => { targetUrl = inputUrl.trim(); console.log(`已记录待解析URL:${targetUrl}`); // 若需要重复输入URL,可注释掉下面的close方法 // rl.close(); }); });
关键修改说明:
- 引入Node.js内置的
readline模块,实现命令行的输入输出交互 - 服务器启动成功后,通过
rl.question()触发输入URL的提示 - 用变量
targetUrl存储用户输入的内容,HTTP请求响应时将其展示在页面上 - 设置响应头字符编码为
utf-8,避免中文显示乱码
运行效果:
- 启动程序后,命令行先显示服务器连接成功提示,随即弹出输入URL的请求
- 输入URL并回车后,命令行提示已记录该URL
- 访问
http://localhost:5050/,页面会显示你输入的待解析URL
内容的提问来源于stack exchange,提问作者Sara01
相关产品推荐
相关产品推荐

