node.js错误 – 抛出新的TypeError('第一个参数必须是string或缓冲区');
我试图在node.js中实现一个基本的添加程序,它通过URL(GET请求)接受2个数字,并将它们加在一起,并给出结果。
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; 如果(path==“/添加”) { console.log(“请求添加接收\ 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; 回复于(TOT); response.write(number1 + number2); } 其他 { response.write(“Invalid Request \ n”); } 到Response.End(); })听(8889); console.log(“服务器启动”);
当我运行时,我在控制台中收到“服务器启动”消息。 但是,当我请求的url
`HTTP://本地主机:8889 /加成VAR = 1&VAR2 = 20`
我收到以下错误:
http.js:593抛出新的TypeError('第一个参数必须是string或缓冲区');
当我注释掉显示variables“tot”的行时,代码正在运行,并且我得到的输出是我传递的2个get参数的连接值。 在这种情况下,恰好是1 + 20 = 120。我无法将数据转换为数字格式。
代码中的错误在哪里? 这个错误信息基本上是什么意思?
提前谢谢了。
你将数字传递给response.write,当他们应该是string。 喜欢这个:
response.write(total + '');
variablestotal包含数字21,因为您在求和之前通过parseInt()传递查询参数。 通过response.write发送时会导致错误,除非先将string转换为string。 number1 + number2是可以的,因为它们是string,但是它们的“和”是“120”。
我build议也看看node.js包“expression”。 它处理了很多HTTP服务器的基础知识,所以你可以这样写:
var express=require('express'); var app=express.createServer(); app.get('/add',function(req,res) { var num1 = parseInt(req.query.var); var num2 = parseInt(req.query.var2); var total = num1 + num2; res.send(total + ''); }); app.listen(8888);