Articles of expression

分析远程JSON分析到响应

我有一个节点服务器向另一个节点服务器发出请求,该服务器返回我想要parsing的JSON,然后作为响应发送。 我意识到额外的parsing步骤是不必要的,但我想确保我正确理解stream的使用: http.get({host: config.host, path: "/data"}, function (response) { response.pipe(JSONStream.parse()).pipe(routeResponse); }); 但是这给了我: http.js:853 抛出新的TypeError('第一个参数必须是string或缓冲区'); 如果我只是做response.pipe(routeResponse)它确实工作。 再一次,我知道这是不必要的,但我想让它工作。 另外: 我将如何独立设置响应头(如有必要) 为什么我不能只做http.get().pipe(routeResponse) ?

中间件和NodeJS错误

我有这个 : app.use(session({secret: 'JKSBDFJKQS444SQ4DQSND'})); 但是当我运行我的应用程序文件时,我得到这个错误: 错误:大多数中间件不再与Express捆绑在一起,必须单独安装。 怎么修 ?

req.session在Firefoxredirect后不刷新

我想在路线中设置req.session并使用另一个。 但事实是,它不刷新只有在Firefox(它在Chrome&Co的效果很好)。 我在客户端设置了这样的对象: <object type="text/html" id="chat-object" data="http://localhost:8080/login/?username=<?php echo $nom_joueur?>&room=<?php echo $id_partie ?>&id=<?php echo $id_joueur; ?>"></object> PHPvariables是好的。 我做了这样的服务器部分: app.get('/', [requireLogin], function (req, res, next) { res.render('index', { "username": req.session.username }); console.log("req = ", JSON.stringify(req.session)); }); /** Login form */ app.get("/login", function (req, res) { var options = { "username": req.query.username, "room_id": req.query.room, "error": null }; console.log("reqSession=" […]

是node.js Express.cookieSession足够安全地保存敏感数据?

我对会议有很好的基本了解。 有两个选项可以使用express和node.js进行会话。 express.session express.cookieSession 第一个我很熟悉,但是我有一些关于第二个方法的问题。 使用cookieSession将存储客户端cookie中的所有实际数据。 这意味着敏感数据将被保存在客户端。 这看起来非常糟糕。 这是否意味着某些恶意软件可能检索到这些数据? 还有一个问题: 我试图用express.cookieSessionreplace我的express.session ,一切正常,我可以看到客户端的数据,但似乎每次我删除cookie并重新进入服务器,我得到同样的会话令牌。 这怎么可能? 除了改变express.session之外,还有什么我应该做的,让我们说: app.use(express.cookieSession({ secret: 'keyboard cat' })); 每当客户获得新的会话时,为什么我会得到相同的标记?

Express和Jade,传入variables

我试图安装这个captcha插件,这是我迄今为止(直接从他们的代码,只是对我的风格调整) 这里是validation码和我下面的步骤: https://github.com/mirhampt/node-recaptcha : https://github.com/mirhampt/node-recaptcha 在我的router.js文件中: app.get('/account/verification/:token/', require('./views/account/verification/index').verifyHuman); 在我的/views/account/verification/index.js文件中: exports.verifyHuman = function(req, res, next){ var Recaptcha = require('recaptcha').Recaptcha; var recaptchaKeys = req.app.config.recaptchaKeys; var recaptcha = new Recaptcha(recaptchaKeys.publicKey, recaptchaKeys.privateKey); console.log(recaptcha.toHTML()); //this returns a script tag with an iframe and stuff in it res.render('account/verification/captcha', { layout: false, locals: { recaptcha_form: recaptcha.toHTML() } }); }; 然后我的/views/account/verification/captcha.jade文件: div#captcha script(type='text/template', […]

如何一次上传多个文件,使用强大的expression方式

我正在尝试使用强大的模块上传文件。 但是,当我select多个file upload,只有第一个上传。 我是节点的新手。 这里是我的上传function exports.uploadPhotos = function(req, res) { console.log("upload received"); var form = new formidable.IncomingForm(); form.multiples = true; form.parse(req, function(err, fields, files) { res.status(200, { 'content-type': 'text/plain' }); res.end('received upload:\n\n'); res.end(util.inspect({ fields: fields, files: files })); }); form.on('end', function(fields, files) { /* Temporary location of our uploaded file */ var temp_path = this.openedFiles[0].path; […]

快递摩根。 logging到内部对象

家伙。 我想使用快递中间件日志logging工具“摩根”,并希望改变一些默认行为。 正如它在文档( https://github.com/expressjs/morgan/blob/master/README.md )中所说的,它需要的一个paramateres是定义输出的“stream”。 默认情况下,它输出到节点控制台,但我们可以将其更改为login到指定的文件。 // create a write stream (in append mode) var accessLogStream = fs.createWriteStream(__dirname + '/access.log', {flags: 'a'}) // setup the logger app.use(morgan('combined', {stream: accessLogStream})) 我想知道是否有机会将所有日志转发到服务器上的指定对象? 我的意思是做这样的事情: var obj = [] var foo = function(param) {obj.push(param)} app.use(morgan('combined'), {stream: foo}) 提前致谢!

如何使用node.js发布页面

我刚开始学习node.js。 在过去的两天里,我一直在研究一个接受用户input并发布ICS文件的项目。 我所有的工作。 现在考虑何时需要显示这些数据。 我得到一个router.get来看看我是否在/cal页面和.. router.get('/cal', function(req, res, next) { var db = req.db; var ical = new icalendar.iCalendar(); db.find({ evauthor: 'mykey' }, function(err, docs) { docs.forEach(function(obj) { var event2 = ical.addComponent('VEVENT'); event2.setSummary(obj.evics.evtitle); event2.setDate(new Date(obj.evics.evdatestart), new Date(obj.evics.evdateend)); event2.setLocation(obj.evics.evlocation) //console.log(ical.toString()); }); }); res.send(ical.toString()); // res.render('index', { // title: 'Cal View' // }) }) 所以当/cal被请求的时候,它循环遍历我的db并创build一个ICS日历。 如果我在循环内做了console.log(ical.toString) ,它给了我一个遵循协议的格式正确的日历。 […]

从服务器redirect而不影响浏览器历史logging

我正在使用NodeJS和expression。 现在,无论用户在端点/页面上发布什么东西,我都会通过response.redirect()发送一个302到同一页面,以避免用户意外地重新发布数据。 但是,后面的历史出现问题。 即使url是完全一样的,浏览器似乎把它放入历史(用最新的Chrome浏览器进行testing),并发布几次到页面然后回去让我去同一页面的时间,我当然想避免。 怎么做?

unit testing快速路由调用控制器方法?

我看到一些类似的问题 ,但我的设置稍有不同,我无法找出一个好方法来testing这个。 我试图testing,我的快速应用程序路线是针对正确的控制器方法。 例如 – //server.js, base application var express = require("express"); var app = express(); require("./routes.js")(app); … //routes.js var menuController = require("./controllers/menu.js"); module.exports = function(expressApp) { expressApp.get('/menu', menuController.getMenu); }; … //test file var express = require('express') , menuController = require("../../controllers/menu.js") , chai = require('chai') , should = chai.should() , sinon = require('sinon') , sinonChai […]