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);