Articles of node.js

unit testing用passport.js和express.jslogin

我试图testing我的本地login。 我已经用passport.js实现了,遵循它的指导并遵循这个MEAN框架。 我很确定实现是正确的,但是总是失败的testing有问题。 如果authentication失败,应该redirect到“/ signin” 如果authentication是正确的,应该去“/” 但是当我testing时,authentication总是失败。 这是routes.js : module.exports = function(app, passport, auth) { var users = require('../app/controllers/users'); app.get('/signin', users.signin); app.post('/users/session', passport.authenticate('local', { failureRedirect: '/signin', failureFlash: 'Invalid email or password.' }), users.session); var index = require('../app/controllers/index'); app.get('/', index.render); passport.js : var mongoose = require('mongoose'), LocalStrategy = require('passport-local').Strategy, User = mongoose.model('User'), config = require('./config'); module.exports […]

用bat文件运行节点服务器

我需要创build一个bat文件来启动节点服务器,实际上我们手动执行,但有些人需要额外的帮助。 让我来解释一下这个过程: 打开CMD 转到path: cd C://user/folder/server/ 运行服务器: npm start 这是非常简单的,但我真的很想自动化的过程,使其更快。

让NodeJS应用程序使用NPM进行更新

Hej在那里, 我试图添加一些非传统的function到我的NodeJS应用程序,但我有一些麻烦。 我想要做的是以下几点: 我想从客户端更新我的服务器代码。 (如果您愿意,可以使用自动更新function。) 我第一次尝试使用NPM API并运行: npm.commands.install([package], function(err, data) 但是当然这会导致错误,告诉我NPM在服务器运行时无法安装。 我第二次尝试使用以下代码产生NPM更新: spawnProcess('npm', ['update'], { cwd: projectPath }, done); spawnProcess函数是一个通用的spawn函数: var projectPath = path.resolve(process.cwd()); var spawnProcess = function(command, args, options, callback) { var spawn = require('child_process').spawn; var process = spawn(command, args, options); var err = false; process.stdout.on('data', function(data) { console.log('stdout', data.toString()); }); process.stderr.on('data', function(data) { […]

摩卡全球范围内的问题

我正在使用我正在使用的全局对象的mochatesting时遇到了一个大问题。 我能够产生下面的MRE,它没有给出完全相同的错误,但是例证了有问题的(越野车?)行为。 任何有识之士将不胜感激。 我在/lib有以下main.js文件: exports.exec = function(){ console.log(test); } 接下来在/test/test.js : var should = require('should'); var main = require('../lib/main'); global.test = {something: 1}; describe('normal test', function(){ beforeEach(function(){ global.test = {another: 2}; }), afterEach(function(){ delete global.test; }); it ('might work with global', function(){ main.exec(); }) }); 最后,这是test/test2.js : var should = require('should'); var main = require('../lib/main'); […]

如何在bunyan中设置'short'输出模式默认情况下

在bunyan的常规(原始)日志看起来如下: $ node myapp.js {"name":"myapp","hostname":"myhost","pid":34572,"level":30,"msg":"start","time":"2013-01-04T07:47:25.814Z","v":0} {"name":"myapp","hostname":"myhost","pid":34572,"widget_type":"wuzzle","level":30,"msg":"creating a wuzzle","time":"2013-01-04T07:47:25.815Z","v":0} 可以使用“短”输出模式,使用CLI,通过pipe道日志bunyan -o short $ node myapp.js | bunyan -o short 07:46:42.707Z INFO myapp: start 07:46:42.709Z INFO myapp: creating a wuzzle (widget_type=wuzzle) 是否有可能默认使用“短”模式,所以node myapp.js会产生短版本的日志?

MongoDB批量插入许多文件已经存在的地方

我有一个较小的文档(大约100个),可以插入到MongoDB中。 但是他们中的许多人(可能全部,但通常是80%左右)将已经存在于DB中。 这些文档代表未来几个月即将发生的事件,而且我每两天更新一次数据库。 所以大部分事件已经在那里了。 任何人都知道(或者想猜)是否会更有效率地: 做批量更新,但与continueOnError = true,例如 db.collection.insert(myArray, {continueOnError: true}, callback) 做单独的插入,首先检查_ID是否存在? 首先做一个大的删除(像db.collection.delete({_id: $in : [array of all the IDs in my new documents] }) ,然后批量插入? 我可能会做#1,因为这是最简单的,我不认为100个文件都很大,所以它可能没关系,但如果有10,000个文件? 如果有问题,我使用node.js驱动程序在JavaScript中执行此操作。 我的背景是在Java中,exception很耗时,这就是我所要求的主要原因 – “continueOnError”选项会耗时吗? 补充:我不认为“upsert”是有道理的。 这是为了更新单个文件。 就我而言,代表即将到来的事件的单个文件没有改变。 (好吧,也许是这是另一个问题) 发生了什么是一些新的文件将被添加。

使用节点从句子中提取重要的单词

我承认我没有在SO数据库中进行大量的search。 我尝试阅读自然的NPM包,但似乎并没有提供的function。 我想知道下面的要求是否有可能? 我有一个数据库,有一个国家的所有城市的名单。 我也有这些城市的评级(最好的地方住,最差的地方,最好的评级城市,更恶劣的城市等)。 现在从用户界面,我想让用户input自由文本,从那里我应该能够search我的数据库。 例如,住在加利福尼亚州或加利福尼亚州或加利福尼亚州的地方的最佳地点 从上面的句子,我只想提取名词(可能),因为这将是我可以search的城市或国家的名称。 然后提取'最好'意味着我可以sorting是一个特定的顺序等… 任何build议或指示寻找? 我冒险有机会将这个问题标记为“有争议的”。 但是我发布的原因是为了得到一些方向。

使用nodejs将来自远程服务器的http请求redirect到本地服务器

在名为charles的工具中有一项function,可以让您映射远程请求: http://www.charlesproxy.com/documentation/tools/map-remote/ 基本上,它可以向服务器发送任何请求(即使不是运行它的服务器),然后向另一个服务器发出新的请求,保留path和查询string。 第二台服务器的响应会覆盖第一台服务器的响应。 我只是想知道是否有一个节点模块可以做到这一点。 我尝试使用HTTP代理,但我有一个感觉,这个地图远程工具是有点不同于代理,因为它看起来像你必须拥有一个代理服务器。 编辑:试图再次使用HTTP代理节点模块,但似乎无法得到它的工作。 这是我的代码: var http = require('http') , httpProxy = require('http-proxy'); httpProxy.createServer({ hostnameOnly: true, router: { 'www.stackoverflow.com': 'localhost:9000', } }).listen(80); // Create your target server // http.createServer(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.write('request successfully proxied!' + '\n' + JSON.stringify(req.headers, true, 2)); res.end(); }).listen(9000); 我的期望是,当我去www.stackoverflow.com或www.stackoverflow.com:80,它将redirect到我的本地主机:9000

“可读”事件发生两次

var fs = require('fs'); var file = fs.createReadStream('./zeros.txt'); var dataSize = 0; file.on('readable', function () { var data = file.read(10); console.log('readable size = ', data.length); console.log(data.toString()); }); Thie文件“zeros.txt”包含700个字符“0” 据我所知,在调用read(10)后,stream必须停止并等待一个新的read()调用。 但是,调用的结果是: readable size = 10 0000000000 readable size = 10 0000000000

如何使用webRTC,node.js和socket.io构build多用户video聊天Web应用程序

即时通讯试图build立一个支持多用户video聊天的networking应用程序。 我读了一篇关于webrtc的文章,关于“webrtc入门”( http://www.html5rocks.com/en/tutorials/webrtc/basics/ ),并在codelab上做了一些演示。 但我仍然不知道如何使它成为一个三方会议call.i真的不知道很多关于node.js和socket.io。 刚开始学习他们,因为即时通讯试图build立这个videonetworking应用程序 所以我的问题是哪个部分的webrtc或socket.io确定超过2个用户可以join呼叫? 或者你们直接给我的任何资源? 提前致谢。