当前位置: 首页 > 知识库问答 >
问题:

node.js错误-抛出新的TypeError(“第一个参数必须是字符串或缓冲区”);

景麒
2023-03-14

    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抛出新的TypeError(“第一个参数必须是字符串或缓冲区”);

当我注释掉显示变量'tot'的行时,代码正在运行,我得到的输出是我传递的2个get参数的级联值。在这种情况下,恰好是1+20=120。我无法将数据转换成数字格式。

事先多谢。

共有1个答案

郭琦
2023-03-14

您将数字传递给response.write,而它们应该是字符串。像这样:

response.write(total + '');

变量total包含数字21,因为您在求和之前通过parseInt()传递了查询参数。当通过response.write发送时,它将导致错误,除非您先将空字符串附加到字符串中,然后将其转换为字符串。Number1+Number2是可以的,因为它们是字符串,但是它们的“和”是“120”。

我建议也研究一下node.js包“express”。它处理了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);
 类似资料:
  • 问题内容: 我正在尝试使用将以下内容转换为JSON : 但这导致我 该错误很可能是由于dict包含,例如: 有人可以指导我,如何从字典中删除这些元素? 问题答案: 您可以尝试像这样清理它: 这将尝试将不是字符串的任何键转换为字符串。任何无法转换为字符串或不能表示为字符串的键都将被删除。

  • 我试图使用lxml.html将“defer”属性放入脚本标记中,但我得到了错误 TypeError:参数必须是字节或unicode,获得“NoneType” 或 TypeError:set()正好接受2个位置参数(给定1个) 如果我用 根据http://lxml.de/lxmlhtml.html .set(key,value=None):设置HTML属性。如果未给定值,或者该值为None,则会创建

  • 我知道很多人问过相关的问题,但请帮我解决。我试图复制一个我在网上找到的开源温度控制实验室。我想在树莓皮上运行它。这就是我一直遇到的错误: 生成它的代码如下所示: 我相信这段代码试图通过以下代码与另一个python文件通信: 我还不知道我周围的python代码,所以一个非常清晰的“虚拟类”解决方案的解释会很有帮助。谢谢伙计们。

  • 问题内容: 需要帮忙。有一个名为arglist的数据列表,例如:[‘dlink’,’des’,‘1210’,’c’,24] <-这就是“打印”视图。 这段代码: 它给: 怎么了? 问题答案: 当json.loads需要一个字符串时,您正在尝试加载文件对象。您可以使用 或者更好: 在第一个示例中,文件是打开的,但从未关闭(不好的做法)。在第二个示例中,上下文管理器在离开上下文块后关闭文件。

  • 我已经使用stencil一段时间了,正在为它开发一个自定义的主题,我已经安装了nvm和Node5.0和NPM2。我也删除了stencil,并重新安装了所有的内容,包括节点模块和stencil init,但不管什么情况,当运行stencil start时,我仍然会出现下面的错误,我已经在谷歌上搜索了这个问题,但却是空的,所以我希望有人能帮我解决这个问题。提前道谢!

  • 我想对一个浮点数进行四舍五入,得到点后的两位数。但我收到了一个错误: float()参数必须是字符串或数字,而不是“NoneType” 在评级模型的评级字段中四舍五入是一个坏主意,因为平均_评级不会四舍五入