在 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 中的网页上显示变量的内容的主要内容,如果未能解决你的问题,请参考以下文章

node.js中的ES6变量导入名称?

如何使用node.js从变量网页获取信息?

html站点上的Node.js mysql显示表

使用 node.js 的实时文本

使用 Node.JS 查询 MySQL 并在网页中显示结果

如何声明一个node.js变量,以后可以在我的js文件中使用?