我正在尝试在node.js中实现一个基本的附加程序,它通过URL接受2个数字(GET请求)将它们加在一起,然后给出结果 .
var http = require("http");
var url1 = require("url");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
var path = url1.parse(request.url).pathname;
if(path == "/addition")
{
console.log("Request for add recieved\n");
var urlObj = url1.parse(request.url, true);
var number1 = urlObj.query["var"];
var number2 = urlObj.query["var2"];
var num3 = parseInt(number2);
var num4 = parseInt(number1);
var tot = num3 + num4;
response.write(tot);
response.write(number1 + number2);
}
else
{
response.write("Invalid Request\n");
}
response.end();
}).listen(8889);
console.log("Server started.");
当我运行时,我在控制台中收到“服务器启动”消息 . 但是当我请求网址时
`http://localhost:8889/addition?var=1&var2=20`
我收到以下错误:
http.js:593 throw new TypeError('first argument must be a string or Buffer');
当我注释掉显示变量'tot'的行时,代码正在运行,我得到的输出是我传递的2个get参数的连接值 . 在这种情况下,它恰好是1 20 = 120.我无法将数据转换为数字格式 .
代码中的错误在哪里?错误信息基本上是什么意思?
提前谢谢了 .
1 回答
你将数字传递给response.write,它们应该是字符串 . 像这样:
变量total包含数字21,因为您在求和之前通过parseInt()传递了查询参数 . 它通过response.write发送时会导致错误,除非您首先通过将空字符串附加到字符串来转换为字符串 . number1 number2是好的,因为它们是字符串,但它们的“sum”是“120” .
我建议也查看node.js包“express” . 它处理HTTP服务器的许多基础知识,因此您可以像这样编写: