Tag: 连接

express / connect中间件在响应发送给客户端后执行

是否有可能编写一个中间件,在响应发送到客户端之后执行,或者在将响应发送到客户端之前处理和调用请求之后执行?

在express / nodejs中退出特定链路的中间件

我有一个这条路线的“路线特定中间件”链,就像这样: var express = require('express'); var server = express(); var mw1 = function(req, resp, next) { //do stuff if (success) { next(); } else { req.connection.destroy(); //without calling next() } }; var mw2 = function(req, resp, next) { //do stuff if (success) { next(); } else { req.connection.destroy(); //without calling next() } }; server.post('/some/path', [mw1, […]

在Express中更改Cookie到期

因为在调用expressServer.use(express.session({params}))时我没有定义maxAge,所以cookie的到期时间被设置为“Session”。 我想在login时添加“记住我”function。如果select“记住我”,则过期将延长到一个月。 我怎么去做这个? 我试图简单地扩大maxAge,但似乎没有做任何事情… expressServer.get '/blah', (request, response) => request.session.cookie.maxAge = 2592000 response.end 'hello there' 谢谢您的帮助! ** 编辑 ** 我试图做一个简单的服务器来testing更新用户的cookie。 我正在使用Express 3.0.4 当我访问127.0.0.1:9000/blah时,浏览器cookie的“过期”字段仍然是“会话”… express = require 'express' expressServer = express() expressServer.use express.cookieParser() expressServer.use express.session secret: 'supersecret' cookie: path: '/' httpOnly: true expressServer.get '/', (request, response) => response.end 'hello' expressServer.get '/blah', (request, response) => request.session.cookie.maxAge = […]

如何在特定的目录上连接/表示使用不到期的caching

我正在开发一个使用connect / express和node.js的应用程序。 它使用这样的“静态”中间件: var express = require("express"); var io = require("socket.io"); var app = express.createServer( express.static(__dirname + '/static') ); app.listen(process.env.PORT || 8080); var listener = io.listen(app); var lobby = listener.of("/lobby"); lobby.on("connection", function (socket) { // etc etc etc }); 在./static ,有一个文件夹,./ ./static/mp3 ,包含了应用程序使用的88个audio文件。 尽pipe返回的访问者已经caching了这些文件,但是我仍然坚信,他们仍然会发送88个http请求来询问他们的caching副本是否过期。 我如何才能执行Expires或max-agecaching,只有这个文件夹?

实时重新加载失败 – 无法加载资源:net :: ERR_CONNECTION_REFUSED

我开始通过Gulp现场重新加载: var $$ = require('gulp-load-plugins')(); gulp.watch('*', function (file) { $$.livereload().changed(file.path); }); gulp.task('connect', function(){ var connect = require('connect'); return connect() .use(require('connect-livereload')()) .use(connect.static(__dirname)) .listen(8000); }); 它一直在工作,直到我最近在浏览器控制台中得到这个神秘的错误,重新加载停止工作: Failed to load resource: net::ERR_CONNECTION_REFUSED http://localhost:35729/livereload.js?snipver=1 任何想法发生在这里? 我在代理后面,但本地主机被排除在外。

Node.js中的中间件devise模式:连接

这个问题扩展了什么是Node.js的Connect,Express和“中间件”? 我正在学习Javascript – > Node.js – > Connect – > Express – > …的路线,以了解如何使用现代Web开发堆栈。 我有一个低层networking的背景,所以起床和Node.js的net和http模块很容易。 使用服务器将请求路由到不同处理程序的一般模式看起来很自然和直观。 转移到连接,恐怕我不了解这个“中间件”的数据范式和一般stream程。 例如,如果我创build一些用于Connect ala的中间件; // example.js module.exports = function (opts) { // … return function(req, res, next) { // … next(); }; }; 并在Connect via中“使用” var example = require('./example'); // … var server = connect.createServer(); // … server.use(example(some_paramater)); 我不知道什么时候我的中间件被调用。 另外,如果我use()其他中间件,我可以保证中间件的调用顺序吗? […]

如何testingConnect / Express中间件?

假设我有Connect和/或Express的中间件。 unit testing这个中间件的最好方法是什么? 当然,我可以在unit testing中设置一个http服务器,并将中间件加载到这个中。 但假设我想testing启动行为,我需要几个http服务器,很快变得复杂和不清楚(考虑在每个单独的testing中使用一个新的端口)。 有没有更好的方法,还是在真正的服务器内进行testing,最好的方法是?

express.js中的中间件function的范围

我正在学习express.js / node.js,并对JavaScript原型模型有一个很好但不是很好的理解。 因此,我对中间件可以用express.js的路由机制进行堆叠的方式感到困惑。 说我们有这个代码 function andRestrictTo(role) { return function(req, res, next) { req.authenticatedUser.role == role ? next() : next(new Error('Unauthorized')); } } app.del('/user/:id', loadUser, andRestrictTo('admin'), function(req, res){ res.send('Deleted user ' + req.user.name); }); 由于和RestrictTo(angular色)返回一个中间件,它得到在路由链中执行 – 我明白了。 然而: req,res,next参数在返回函数中来自哪里? 我想这个“连锁店”是排队的,并且对参数进行了调整,但是对于更深入的理解,这有些太模糊了。 作为下一个参数引发的错误发生了什么? 错误是否会破坏中间件链? 如果我想将限制机制打包到一个单独的文件/模块(如安全框架),那将如何完成? 这将是很酷,如果有人可以指出基本的想法:)

带参数的路由被调用两次?

我正在通过ExpressJS创build一个NodeJS Web应用程序。 我有以下两条路线(其中包括): app.get('/user/reset/verify', function(req, res) { console.log("Executing verification index."); res.render("verify/index"); }); app.get('/user/reset/verify/:email/:token', function(req, res) { console.log("Executing verification change."); res.render("verify/change"); }); 当我进入validation索引页面时,看到“执行validation索引”。 在控制台上打印一次。 但是,当我进入validation更改页面时,我看到“执行validation更改”。 在控制台上打印两次。 我注意到,这是我的应用程序中的路线的趋势。 包含参数的路由总是被执行两次,而没有参数的路由只被(正确)执行一次。 为什么参数路由被执行两次? 正在呈现的视图只包含简单的HTML – 不会导致对页面的另一个请求。 另外,我正在从Chrome浏览器发出这些请求。 平台/版本: NodeJS:0.5.5 windows构build(在Win 7上运行) 快递:2.4.6 连接:1.7.1

用npm作为构build工具连接文件

我最近发现我可以使用npm作为任务运行,而不是吞咽或咕噜声,到目前为止,一切都非常棒(皮棉,手写笔,玉器,uglify,手表等),但是连接部分,我似乎无法实现。 一口吞下了这样的东西: gulp.task('scripts', function() { return gulp.src('www/js/**/*.js') .pipe(concat('all.js')) .pipe(gulp.dest('www/dist')) .pipe(rename('all.min.js')) .pipe(uglify()) .pipe(gulp.dest('www/dist')); }); 有没有办法,我可以用npm做到这一点? 为了更清楚一点,我的目标是做这样的事情: // package.json { "name": "f_todo", "version": "1.0.0", "description": "", "main": "index.js", "author": "", "license": "MIT", "devDependencies": { "concat": "^1.0.0", "rerun-script": "^0.6.0", "stylus": "^0.53.0" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "stylus": "stylus ss –compress –out […]