在 node.js 中的网页上显示变量的内容
Posted
技术标签:
【中文标题】在 node.js 中的网页上显示变量的内容【英文标题】:Displaying the content of a variable on webpage in node.js 【发布时间】:2012-12-16 22:44:08 【问题描述】:我有如下代码:
app.get('/list', function(req, res)
serialport.list(function (err, ports)
ports.forEach(function(port)
var temp = port.manufacturer;
console.log(temp);
res.send(temp);
);
);
);
可以看出,port.manufacturer
的值被保存到变量 temp 中,并且 temp 的结果内容显示在控制台上。
当我运行上面的代码时,我的控制台上会出现这样的信息:
Listening on port 3000...
Tinkerforge GmbH
GET /list 200 219ms - 16
Arduino (www.arduino.cc)
GET /favicon.ico 404 4ms
但是当我调用 api http://localhost:3000/list
,
仅显示 Tinkerforge GnbH,不显示 Arduino。
我这里有什么遗漏吗??
我必须将列表保存在数组中吗??
任何帮助将不胜感激。
提前非常感谢。顺便说一句,我是 node.js 和 javascript 的初学者。
【问题讨论】:
【参考方案1】:这里的问题是.send
,不像.write
,只能被调用一次。调用时,Express 将分析数据并检测正确的标头 (res.writeHead) 以在写入 (res.write) 到套接字之前发送,最后关闭连接 (res.close)。
解决方案是使用.write
或一次性发送所有数据。
使用 .write
app.get('/list', function(req, res)
serialport.list(function (err, ports)
ports.forEach(function(port)
var temp = port.manufacturer;
res.write(temp);
);
res.send();
);
);
使用 .send
app.get('/list', function(req, res)
serialport.list(function (err, ports)
var manufacturers = [];
ports.forEach(function (port)
manufacturers.push(port.manufacturer);
);
res.send(manufacturers.join(" "));
);
);
我可能会使用 JSON.stringify(manufacturers)
之类的东西,而不是使用 .join
,因为 JSON 很容易使用。
【讨论】:
您好,感谢您的回复。我尝试了您的代码,但似乎没有任何反应。当我在浏览器上打开 API 时,我什么也得不到。 @Kishorepandey 不确定出了什么问题,但上述两种选择中的任何一种都应该有效。如果不访问实际代码或工作测试用例,很难进一步帮助您。 @Kishorepandey 啊,太棒了!刚刚意识到我在使用.send
替代方案时犯了一个错误。我假设端口是一个数组,而实际上它是一个对象。我的错!我现在已经修好了;)以上是关于在 node.js 中的网页上显示变量的内容的主要内容,如果未能解决你的问题,请参考以下文章