使用缓冲区解码base64时出错。第一个参数必须是数字

埃尔皮尔

我正在基于URL运行不同的编码语句。

我的代码:

  var parsedUrl = url.parse(req.url, true);
  var queryAsObject = parsedUrl.query;

  var myString = queryAsObject["string"];
  var myFunction = queryAsObject["function"];

  if (myFunction == "encodeb64") {

  var bufEncode = new Buffer(JSON.stringify(myString));
  var myEncode = bufEncode.toString('base64');

  console.log(myEncode);

  }

  else {
    console.log("Error1");
  };


  if (myFunction == "decodeb64") {

  // var bufDecode = new Buffer(myEncode, 'base64');
  // var myDecode = bufDecode.toString('utf8');

  var myDecode = new Buffer(myEncode, 'base64').toString('utf8');

  console.log(myDecode);

  }

  else {
    console.log("Error2");
  };

使用的网址: http://127.0.0.1:8020/?string=text&function=decodeb64

问题是我在使用最后一个if语句。如果它在寻找decodeb64并且第一个语句正在寻找,encodeb64则它function=decodeb64在URL中时会崩溃如果两个if语句都在寻找encodeb64decodeb64,则它运行完美。如果function=encodeb64在URL中,它也可以使用

我收到的错误消息是:

buffer.js:188
        throw new TypeError('First argument needs to be a number, ' +
              ^

它指向:

  var myDecode = new Buffer(myEncode, 'base64').toString('utf8');

错误的给定数字指向new中的n。

我通过移动和反转代码上的顺序将问题定位在解码if语句中。

如您在代码说明中所见,我尝试了两种不同的解码方法,但均未成功。

用户名

我认为它崩溃的原因是,当function = decode64时,未声明和初始化变量myEncode,因为没有运行if(myFunction ==“ encode64”)块。因此,当代码尝试新建Buffer(myEncode ...)时,它将失败,因为myEncode未定义。我认为您打算编写代码:

var myDecode = new Buffer(myString, ...)

反而

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何获取第一个命令行参数并将其放入内存中的静态缓冲区?

golang base64编码vs nodejs缓冲区base64编码

读取net.Conn缓冲区的第一个UVarInt

要附加的第一个参数必须是slice

nodejs-第一个参数必须是字符串或Buffer-与http.request一起使用response.write时

TypeError:第一个参数必须是可调用的

自第一个新组元素以来具有超时的Rx缓冲区

node.js请求POST数组“第一个参数必须为字符串或缓冲区”

获取“第一个参数必须是字符串或缓冲区”错误

“第一个参数必须是字符串或缓冲区”-遵循w3schools的Node.js教程时出现错误

cipher.js TypeError:IV必须是一个缓冲区

访问汇编中缓冲区的第一个字节?

RuntimeError:模块必须在设备cuda:1(device_ids [0])上具有其参数和缓冲区,但在设备cuda:2上找到其中一个参数和缓冲区

获取指向数组第一个元素的指针的地址,并将所有元素复制到新缓冲区

Vimgrep不会打开在新缓冲区中发现的第一个匹配项

SyntaxError:错误评估函数`unit`:unit的第一个参数必须为数字

UDP连接中的第一个缓冲区包含垃圾-后续连接很好

Vim Ack在当前缓冲区中打开第一个文件

Vim缓冲区名称自动补全在第一个目录后不起作用

Linux-C:从管道读取将返回写入其的第一个缓冲区

异步服务器套接字缺少第一个缓冲区流

缓冲区溢出的第一个实验

触发第一个事件后几秒钟的RX缓冲区事件

MongoDB:第一个参数必须是字符串还是缓冲区?

如何在行缓冲区中找到第一个响应后让 grep 运行命令?

将指向第一个字符串元素的指针作为缓冲区传递

使用 TweenInfo 时显示错误消息“TweenInfo.new 第一个参数需要一个时间数字”

添加新元素时RXJS启动缓冲区并且它是第一个

fread() 仅将第一个字符复制到目标缓冲区