Tag: node.js

用Node.js实时刮取网页

什么是一个好的是用Node.js刮取网站内容。 我想创build一个非常非常快速的东西,可以执行kayak.com样式的search ,其中一个查询分派到几个不同的站点,结果被删除 ,并在客户端可用时返回给客户端。 我们假设这个脚本应该只提供JSON格式的结果,我们可以直接在浏览器或其他Web应用程序中处理它们。 几个起点: 使用node.js和jquery来抓取网站 任何人有任何想法?

什么是Node.js与扭曲的用例?

假设一组开发人员在使用Python和Twisted编写服务器端Javascript时也同样舒适,那么Node.js什么时候比Twisted更合适呢(反之亦然)呢?

如何在Node上的http.request()设置超时?

我试图设置一个HTTP客户端使用http.request没有运气的超时。 到目前为止我所做的是这样的: var options = { … } var req = http.request(options, function(res) { // Usual stuff: on(data), on(end), chunks, etc… } /* This does not work TOO MUCH… sometimes the socket is not ready (undefined) expecially on rapid sequences of requests */ req.socket.setTimeout(myTimeout); req.socket.on('timeout', function() { req.abort(); }); req.write('something'); req.end(); 任何提示?

我如何testing我的快速应用程序与摩卡?

我刚刚添加了shouldjs和mocha到我的快速应用程序进行testing,但我想知道如何testing我的应用程序。 我想这样做: app = require '../app' routes = require '../src/routes' describe 'routes', -> describe '#show_create_user_screen', -> it 'should be a function', -> routes.show_create_user_screen.should.be.a.function it 'should return something cool', -> routes.show_create_user_screen().should.be.an.object 当然,这个testing套件中的最后一个testing只是告诉医生res.render函数(在show_create_user_screen中调用)是未定义的,可能是因为服务器没有运行,configuration尚未完成。 所以我想知道其他人是如何进行testing的?

passport.js passport.initialize()中间件未被使用

我正在使用express + mongoose的节点,并尝试使用passport.js和restful api。 validation成功后,我一直收到这个exception(我在浏览器上看到了callbackurl): /Users/naorye/dev/naorye/myproj/node_modules/mongoose/lib/utils.js:419 throw err; ^ Error: passport.initialize() middleware not in use at IncomingMessage.req.login.req.logIn (/Users/naorye/dev/naorye/myproj/node_modules/passport/lib/passport/http/request.js:30:30) at Context.module.exports.delegate.success (/Users/naorye/dev/naorye/myproj/node_modules/passport/lib/passport/middleware/authenticate.js:194:13) at Context.actions.success (/Users/naorye/dev/naorye/myproj/node_modules/passport/lib/passport/context/http/actions.js:21:25) at verified (/Users/naorye/dev/naorye/myproj/node_modules/passport-facebook/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth2.js:133:18) at Promise.module.exports.passport.use.GitHubStrategy.clientID (/Users/naorye/dev/naorye/myproj/config/passport.js:91:24) at Promise.onResolve (/Users/naorye/dev/naorye/myproj/node_modules/mongoose/node_modules/mpromise/lib/promise.js:162:8) at Promise.EventEmitter.emit (events.js:96:17) at Promise.emit (/Users/naorye/dev/naorye/myproj/node_modules/mongoose/node_modules/mpromise/lib/promise.js:79:38) at Promise.fulfill (/Users/naorye/dev/naorye/myproj/node_modules/mongoose/node_modules/mpromise/lib/promise.js:92:20) at /Users/naorye/dev/naorye/myproj/node_modules/mongoose/lib/query.js:1822:13 我读过,我应该把app.use(passport.initialize()); 和app.use(passport.session()); 在app.use(app.router);之前app.use(app.router); 这就是我所做的。 这是我的express.js注册中间件: var express = require('express'), mongoStore = […]

正确的方法来设置响应状态和JSON内容的REST API使用nodejs和express

我正在玩Nodejs,并通过构build一个小的restAPI来expression。 我的问题是,设置代码状态以及响应数据的最佳做法/最佳方法是什么? 让我用一点代码解释一下(我不会把启动服务器所需的节点和expression式代码,只是所关心的路由器方法): router.get('/users/:id', function(req, res, next) { var user = users.getUserById(req.params.id); res.json(user); }); exports.getUserById = function(id) { for (var i = 0; i < users.length; i++) { if (users[i].id == id) return users[i]; } }; 下面的代码完美的工作,当发送邮递员的请求时,我得到以下结果: 正如你所看到的,状态显示200,这是OK的。 但这是做到这一点的最好方法吗? 有没有这样的情况,我应该自己设置状态,以及返回的JSON? 还是总是用快递处理? 例如,我刚做了一个快速testing,稍微修改了上面的get方法: router.get('/users/:id', function(req, res, next) { var user = users.getUserById(req.params.id); if (user == null […]

使用passport.js在node.js中进行身份validation后,redirect到上一页

我试图build立一个使用node.js,express和passport.js的login机制。 login本身工作得相当不错,会话也很好地存储在redis中,但是在提示用户进行身份validation之前,将用户redirect到他所在的位置时遇到了一些麻烦。 例如,用户链接http://localhost:3000/hidden然后被redirect到http://localhost:3000/login但是我希望他再次被redirect到http://localhost:3000/hidden 。 这样做的目的是,如果用户随机访问一个页面,他需要首先login,他应该被redirect到/ login站点提供他的凭据,然后被redirect到他以前试图访问的网站。 这是我的login信息 app.post('/login', function (req, res, next) { passport.authenticate('local', function (err, user, info) { if (err) { return next(err) } else if (!user) { console.log('message: ' + info.message); return res.redirect('/login') } else { req.logIn(user, function (err) { if (err) { return next(err); } return next(); // <-? Is this line […]

是node.js rmdirrecursion? 它会在非空目录上工作吗?

fs.rmdir的文档非常短,并不能解释当目录不为空时rmdir的行为。 问 :如果我尝试使用此API删除非空目录,会发生什么情况?

我怎样才能卸载或升级我的旧node.js版本?

前段时间我在我的Ubuntu系统上安装了node.js。 用下面的步骤(我的历史转储): 309 git clone git://github.com/joyent/node.git 310 cd node/ 311 ./configure 312 make 313 ls -l 314 node 315 sudo make install 我的版本是v0.3.2-pre。 请问,有卸载/安装或升级获得新版本的干净方式? 我没有太多的制作或混帐经验。 谢谢

Express-mysql-session阻止passport deserializeUser运行

我有一个应用程序使用passport.js通过Facebooklogin用户,并试图使用express-mysql-session来保持其login状态。 如果我不包含express-mysql-session代码,那么护照serializeUser和deserializeUser函数就可以正常工作了…但是当我试图用express-mysql-session存储会话的代码时,deserializeUser函数不会不会受到打击,用户永远不会正确login。 server.js文件 var express = require('express'); var mysql = require('mysql'); var passport = require('passport'); var session = require('express-session'); var MySQLStore = require('express-mysql-session')(session); if (typeof process.env.OPENSHIFT_MYSQL_DB_HOST === "undefined"){ var options = { host : 'localhost', port : '3307', user : 'user', password : 'password', database : 'database', socketpath: '/var/run/mysqld/mysqld.sock' } } else { var options […]