如何在JavaScript中检查特定的exception?

我正在编写一个Node.js应用程序,并且在其代码块之内可能会引发各种exception(通过我称之为第三方代码)。 现在我想对这些例外做出反应,因此我这样做: try { // Call 3rd party code } catch (e) { // Handle e } 基本上,这工作正常,但…我如何区别不同的例外? 不幸的是,他们都有构造函数的Error ,所以这是不可行的。 我可以使用message属性,但当然这不是最好的方式(因为我依赖于事实的消息将永远不会改变,这是 – 恕我直言,更可能比构造函数的变化)。 有任何想法吗? PS:具体地说 – 我需要在尝试执行tls.connect时对SSL错误做出反应。 如何检测到SSL错误?

试图通过npm永远安装…不工作

我试图永远使用npm通过shell命令行安装: npm install forever 这是我得到的回应: npm ERR! Failed to parse json npm ERR! Unexpected end of input npm ERR! File: /home/MYUSER/package.json npm ERR! Failed to parse package.json data. npm ERR! package.json must be actual JSON, not just JavaScript. npm ERR! npm ERR! This is not a bug in npm. npm ERR! Tell the package author […]

我如何断言一个函数被调用?

我有一个山羊类: class Goat constructor: (@headbutt) -> @isCranky = true approach: -> if @isCranky @headbutt() 我想写一个摩卡testing来声明,如果isCranky为true并调用方法,则调用headbutt()。 我能find的唯一解释是在Ruby中。 试着翻译它,但失败了。 我怎样才能断言正确的function被称为? 我认为我可以用一种拙劣的方式解决问题,但宁可学习正确的方法。 build议?

Node.js:调用纯Javascript函数

我正在使用Nodejs来编写一些示例程序。 我正面临着从Nodejs中调用JavaScript文件的问题。 假设我有3个.js文件:A.js,B.js,C.js. A.js写在Node中。 B.js和C.js是用纯Javascript编写的。 现在我需要从A.js中调用B.js中的函数b()。 所以我eval()B.js和导出方法b()。 这工作正常。 但问题是当我在B.js中的函数b()在C.js中调用函数c()时。 B.js: function b() { console.log('In function b'); c(); } C.js: function c() { console.log('In function c'); } 只是为了增加这个问题。 我在B.js:var abc中有一个var,在B.js的全局空间中。 在C.js中,我可以参考它:var a = abc; 如何确保我的C.js可以访问我的variablesabc? 我如何确保依赖性得到解决? 任何帮助,将不胜感激。 谢谢!!!

从Node和Browser运行时需要Javascript模块

我正在使用Nodejs编写一些示例程序,这些程序也应该从浏览器中调用。 我正面临着一个问题,就是在Nodejs中调用JavaScript文件,同样也会与浏览器的JS语义兼容(所以require ,Node是特定的,不会做这个工作)。 假设我有三个.js文件:“A.js”,“B.js”和“C.js”。 “A.js”写在Node中。 “B.js”和“C.js”是用纯JavaScript编写的(也就是说,它们应该可以从浏览器中调用)。 我需要从“A.js”调用“B.js”中存在的函数b()。 所以我eval()“B.js”导出方法b()。 这工作正常。 当“B.js”中的函数b()调用“C.js”中的函数c()时,会发生此问题。 B.js: function b() { console.log('In function b'); c(); } C.js: function c() { console.log('In function c'); } 我如何确保依赖性得到解决? 任何帮助,将不胜感激。 谢谢!!!

如何用node.js写一个服务器调用谷歌地图的API?

例如,我在服务器中有很多GPS数据(服务器是用node.js写的)服务器可以发送一个post(和数据)到谷歌地图来调用它的API,并返回服务器的数据? 我希望你能给我解释一个例子(用一些代码更好!:)) 非常感谢。

Sequelize.js使用hasMany连接两次表

我正在使用Sequelize.js在同一个表上执行双连接。 我有一组Team对象和一组Game对象。 一个团队有许多游戏,所以它会在游戏桌上有外键,但是在每个游戏中都有两个团队,所以我需要两次join表格。 什么是使用序列化ORM来做到这一点的最好方法。 Team = sequelize.define('teams',{ name : Sequelize.STRING, location : Sequelize.STRING, }); Game = sequelize.define('games',{ homeTeamId : Sequelize.INTEGER, awayTeamId : Sequelize.INTEGER, location : Sequelize.STRING, }); // Associations Game.hasOne(Team, {foreignKey : 'homeTeamId'}); .hasOne(Team, {foreignKey : 'awayTeamId'}); Team.hasMany(Game); 谢谢!

是否有可能使用闪光灯sockets和networkingsockets同时socketsio?

现在我一直在为此苦苦挣扎,试图在各处find信息,但是我解决不了。 基本上,我有一个Flash客户端应用程序和一个浏览器 – 基于铬的应用程序连接到一个套接字io – nodejs服务实例。 如您所知,Chrome浏览器可以通过Websocket工作,而我的Flash应用程序则可以通过Flash插槽工作。 一切工作之间的铬和节点之间,但是当我从我的Flash应用程序进行任何交互,降级连接types为闪存套接字而不是Web套接字使Chrome Web应用程序无法读取服务器,因为服务器开始发出消息使用flashsockets。 基本上,当我从Flash做任何交互时,Chrome不再收到任何信息。 你知道有什么方法通过闪存节点保持服务信息,但也保证节点 – 铬通过websockets进行通信? 我已经尝试了推荐的库与socket io连接,你可以在socket io网站上find它; 这是一个https://github.com/simb/FlashSocket.IO 另外我试图在AS3中使用一个使用websockets的库,但似乎无法与socket.io正确通信; 这是一个https://github.com/y8/websocket-as 。 尝试连接时输出的消息套接字是“debug – 销毁nonsocket.io升级” 这里有一些debugging代码,显示flashsockets和websocket,这是我的两个客户端应用程序试图连接到相同的套接字io服务器: https://gist.github.com/4637617 非常感谢你的帮助!

在socket.io中断开客户端的socket与socket.id

我创build了一个数组,其中包含有关套接字和会话的信息以及下面的昵称 myarray == [ {sessionId: '12345', nickname: 'timmay!', socketIds: [1, 2, 3]}, {sessionId: '23456', nickname: 'pete', socketIds: [4, 5, 6]} ] 现在我想断开socket.id号码1和2,因为我想要一个用户只有1个sockets1浏览器。 例如,如果昵称为timmy的用户打开我们与他的浏览器的一个选项卡的聊天,我们有socketIds: [1]然后,如果他打开另一个选项卡,我们为他创build另一个套接字ID为2,现在我们有一个客户端2 ID。 反正是有断开id号码1与socket.id? 一些这样的代码呢? socket.disconnect(socket.id)

围绕socket.io构build一个node.js应用程序

我在基于websockets的Node.js / Express中编写应用程序。 我将Node的EventEmitter与socket.io结合使用,形成了一个几乎完全由事件驱动的应用程序。 我想知道这是不是一个好的build筑。 我的主要套接字现在在app.js中进行pipe理,并具有如下代码: socket.on(Events.InitialFetch, function(battle_id){ dispatcher.emit(Events.InitialFetch, battle_id); }); dispatcher.on(Events.InitialFetched, function(data){ socket.emit(Events.InitialFetched, data); }); …在我的控制器中,我有这样的代码: dispatcher.on('initial-fetch', function(data){ Battle.findOne({_id: data}) .populate('players') .populate('owner') .exec(function(err, battle){ if (err) { } else { dispatcher.emit(Events.InitialFetched, battle); } }); }); 而不是正常的RESTful路由。 我的担心是有点混淆(即“提取”和“提取”用于描述数据stream),事实上,我基本上是从一种types的事件发射器(socket.io)传递方法到另一个(Event.EventEmitter) 。 这怎么能更好地架构? 让控制器直接访问套接字而不是使用EventEmitter作为总线会更好吗? 我怎样才能让我的事件的名字更清楚?