Tag: node.js

console.log和node.js中的sys.puts之间的区别?

在node.js中,您可以使用console.log或sys.puts打印到屏幕上。 什么是首选的方法和这些之间的区别是什么?

如何在packages.json中指定所需的Node.js版本?

我有一个需要Node版本12或更高版本的Node.js项目。 有没有办法在packages.json文件中指定它,这样安装程序会自动检查并通知用户是否需要升级?

在Windows上安装npm(Node.js包pipe理器)(不使用Node.js MSI)

问题是:在使用nvm来安装Node.js时,我能够安装我需要的Node.js版本,但nvm不会自动安装npm 。 NPM的页面没有提供关于安装的信息。 由于没有太多的Windows用户我自己,我完全无所适从… 谷歌的每个结果似乎都使用Node.js MSI安装程序来得到这个工作 – 这不是我的select。 那么,我怎么样?

如何closures可读stream(在结束之前)?

如何在Node.js中closures可读的stream ? var input = fs.createReadStream('lines.txt'); input.on('data', function(data) { // after closing the stream, this will not // be called again if (gotFirstLine) { // close this stream and continue the // instructions from this if console.log("Closed."); } }); 这会比: input.on('data', function(data) { if (isEnded) { return; } if (gotFirstLine) { isEnded = true; console.log("Closed."); […]

我可以使用require(“path”)。join来安全地连接url吗?

这是安全的使用require("path").join 。join来连接url,例如: require("path").join("http://example.com", "ok"); //returns 'http://example.com/ok' require("path").join("http://example.com/", "ok"); //returns 'http://example.com/ok' 如果不是的话,你会怎样build议这样做,而不用编写完整的ifs代码。

使用Monit而不是基本的Upstart设置会有好处吗?

我正在configuration我的服务器来运行node.js作为守护进程。 我已经安装了Upstart来处理节点的启动和closures,这非常有效。 下一步是确保node.js在死亡时重新启动。 一些指南build议使用Monit (或者Fugue )来监视进程(在Monit的情况下,通过对服务器进行HTTP请求并等待响应)。 我很高兴使用Monit或Fugue之类的东西,但是我不确定为什么不使用Upstart的重生function (或不能)。 我认为,Upstart会监控启动过程的PID,如果死亡,就会再次启动。 Monit或Fugue给你的东西是不是Upstart?

如何在具有不同域的相同IP /服务器上托pipe多个Node.js站点?

我有一个绑定到它的单个IP的Linux服务器。 我想在这个IP上的这台服务器上承载多个Node.js站点,每个(显然)都有一个唯一的域或子域。 我希望他们都在80端口。 我有什么办法可以做到这一点? 一个显而易见的解决scheme似乎是让所有域由一个node.js Web应用程序提供服务,该应用程序充当代理,并执行到另一个运行在唯一端口上的node.js应用程序。

使用Jade在variables中呈现HTML

我有一些文本存储在一个包含一些HTML的variables。 例如,帽子里的猫 。 但是,当我在翡翠呈现它,它显示与标签,而不是呈现格式。 我怎样才能解决这个问题?

Websocket传输可靠性(重新连接期间的Socket.io数据丢失)

用过的 NodeJS,Socket.io 问题 想象一下,有2个用户U1 & U2 ,通过Socket.io连接到一个应用程序。 该algorithm如下: U1完全失去互联网连接(例如切断互联网) U2发送消息给U1 。 U1还没有收到消息,因为互联网已closures 服务器通过心跳超时检测到U1断开连接 U1重新连接到socket.io U1永远不会收到来自U2的消息 – 我猜在步骤4中丢失了。 可能的解释 我想我明白为什么会发生: 在步骤4中服务器也将套接字实例和消息队列杀死到U1 而且,在步骤5中, U1和服务器创build新的连接(不重用),所以即使消息仍在排队,以前的连接仍然丢失。 需要帮忙 我怎样才能防止这种数据丢失? 我必须使用听觉,因为我不会永远挂在应用程序。 此外,我还必须给出一个重新连接的可能性,因为当我部署一个新版本的应用程序,我想零宕机。 PS我称之为“消息”的东西不仅仅是一个我可以存储在数据库中的文本消息,而是一个有价值的系统消息,必须保证这个消息是传递的,还是UI的紧密结合。 谢谢! 另外1 我已经有一个用户帐户系统。 而且,我的应用程序已经很复杂了。 添加离线/在线状态将无济于事,因为我已经有了这样的东西。 问题是不同的。 退出步骤2.在这一步,我们在技术上不能说,如果U1下线 ,他只是失去了连接说2秒,可能是因为互联网不好。 所以U2发给他一个消息,但是U1没有收到,因为互联网对他来说还是很糟(步骤3)。 第4步是需要检测离线用户,可以说,超时是60秒。 最终在10秒内,U1的互联网连接已经启动,他重新连接到socket.io。 但是来自U2的消息在空间中丢失,因为服务器U1由于超时而断开连接。 这是问题,我不能100%交货。 解 在{}用户收集发射(发射名称和数据),由随机发射ID标识。 发送发射 确认在客户端发射(发送发射回服务器与emitID) 如果确认 – 从由emitID标识的{}中删除对象 如果用户重新连接 – 请检查此用户的{},然后循环执行步骤1中的每个对象{} 如果需要,断开用户连接或/和连接flush {}

在套接字连接上发送附加数据

如何在套接字连接上更好地发送附加数据? 客户: socket.on('connect',function(){ //I'd like set some values and pass them up to the node server. }); Node.js服务器: io.on('connection', function(client){ //I'd like to get the data here. }); 例如发送用户名或电子邮件地址等