我尝试创建简单的tcp服务器来评估和打印结果,但它不起作用,下面是我的代码:
var net = require('net');
var server = net.createServer(function(socket) {
socket.on('data', function(data) {
socket.write('result: ');
socket.end(eval(data));
});
});
server.listen(8080);
当我连接到8080端口时,我得到了这个:
$ echo 10+10 | nc localhost 8080
result: 10+10
为什么Eval不工作?
最佳答案
默认情况下,流在数据事件上接收Buffer
对象。
从MDN开始:
如果eval()的参数不是字符串,eval()将返回未更改的参数
由于导出对象没有效果,eval
按原样发送数据。要将数据转换为字符串,必须将套接字的编码显式设置为utf8。
var server = net.createServer(function(socket) {
socket.setEncoding('utf8');
socket.on('data', function(data) {
socket.write('result: ');
var evaluatedData = eval(data);
socket.end(evaluatedData.toString());
});
});
write()
是必需的,因为toString()
实际上接受了socket.write
或Writable.write
。关于javascript - Node.js评估和打印数据的TCP服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18285876/