Tag: 中间件

通过Express中间件或通过构build系统预处理

通过中间件(使用快递)预处理静态资源是生产环境的一个好主意? 根据我的理解,中间件堆栈是按照每个请求的顺序运行的。 那不是说那个预处理中间会在每个请求之后重新生成一个静态资源(即some_styles.less – > some_styles.css)吗? 如果是这样,预先通过grunt.js等构build系统进行预处理并提供这些文件会更好吗? 我想最终呈现的CSS和JS连接到一个文件,并缩小。 另外,是否值得从仅包含静态内容的页面上的模板(如jade)预渲染html? 或者比它的价值更麻烦?

我怎样才能和express.static一起使用中间件?

我有一个nodejs应用程序,通过express.static服务于单个页面的应用程序。 这一切工作正常,但是当我尝试创build一个简单的中间件: app.use(function(req, res, next){ console.log('%s %s', req.method, req.url); next(); }); app.use(express.static(path.join(__dirname, 'client'))); 从客户端加载内容的任何尝试失败: TypeError: Object function (req, res, next){ console.log('%s %s', req.method, req.url); next(); } has no method 'concat' 如果在express.static调用之后使用中间件,则它工作正常 – 但不会调用静态内容。 我需要设置中间件,以便任何Flash消息(来自连接闪存)都可以作为cookie发送到静态内容。 有谁知道我可以如何使用中间件的所有内容,包括静态内容? 最后,我将服务两个文件夹,一个公共和一个私人(通过护照authentication)。

如何在路由器的app.js中调用express 4.0中间件function?

我有一个中间件function来做app.js(starter javascript)中的基本授权。 但其他JavaScript文件中有几个路由器文件。 我的问题是我如何在我的路由器中调用授权中间件function? 这是我的app.js: var basicAuth = require('basic-auth'); var auth = function (req, res, next) { function unauthorized(res) { res.set('WWW-Authenticate', 'Basic realm=Authorization Required'); return res.send(401); }; var user = basicAuth(req); if (!user || !user.name || !user.pass) { return unauthorized(res); }; if (user.name === 'foo' && user.pass === 'bar') { return next(); } else { […]

如何限制用户在Loopback中只访问他的组元素?

我试图在文档或networking上的任何地方find它,但我没有find。 我在问什么? 我正在为多个用户构build网站。 前端并不重要,后端的后端API正在Loopback中构build。 每个用户都会被分配到一些,我们将其命名为GROUP。 组内容将在子域上显示,但现在并不重要。 用户将是他们组的pipe理员。 我会有很多不同的模型,但是我将永远不得不保护用户访问不属于他的组的元素。 我应该怎么做? 我认为这将是一些中间件,但我不知道如何做到这一点。 当然,每个用户和每个元素都有字段“group_id”。

在快速中间件中提供自定义参数

我有我的Node.js应用程序的问题。 总之,我想将自定义parameter passing到我的中间件function,而不仅仅是req , res和next 。 中间件文件: var DB = require('./DB.js'); function requirePermissions(e) { console.log('nope') } module.exports = requirePermissions; 路线: router.post('/posts', requirePermissions('post_creation'), function(req, res) { var o = req.body, title = o.post.title, content = o.post.content; res.send('made it'); }); 我已经确认使用函数requirePermissions(req, res, next) {}将工作,但我不明白如何包含我自己的参数。

如何在Node.js中编写一个中间件类

我已经在Google和书籍上研究了几个小时的话题,而且我只能find非常具体的实现。 我正在努力编写一个简单的中间件类在节点JS只有普通香草的JavaScript(没有像async,co,额外的模块..)。 我的目标是了解它如何工作,而不是获得最优化的代码。 我想要一些简单的东西,比如有一个string,并通过使用中间件来添加新的string。 class上 "use strict"; class Middleware { constructor() { this.middlewares = []; } use(fn) { this.middlewares.push(fn); } executeMiddleware(middlewares, msg, next) { // This is where I'm struggling } run(message) { this.executeMiddleware(this.middlewares, message, function(msg, next) { console.log('the initial message : '+ message); }); } } module.exports = Middleware; 一个可能的用法 const Middleware = require('./Middleware'); […]

如何使用Express和Node仅在POST上添加中间件

我有一个中间件,只有在http方法发布后才能应用。 以下工作正常,但我觉得有一个更好的办法: 'use strict' const express = require('express'), router = express.Router() router.use((req, res, next) => { if (req.method === 'POST') { // do stuff } return next() }) module.exports = router 我想要做这样的事情,但它不起作用: 'use strict' const express = require('express'), router = express.Router() router.post((req, res, next) => { // do stuff return next() }) module.exports = router

如何在快速error handling中使用return

这两个调用error handling程序的代码之间的快速应用程序有区别吗? return next(err); next(err); return; 他们是不同还是相同,如果不同,哪一个是正确的/首选的?

TypeError:req.next不是一个函数

在节点中得到这个错误,我认为这是由于我的一件中间件,但它指向的代码行是我的用户控制器res.render()调用。 我找不到任何人在网上写这个错误,并且在查看代码一段时间后找不到原因。 有任何想法吗?

如何dynamic地决定请求是否应该通过Express中间件

所有: 我对Epxress来说是个新手,我构build了一个中间件来检查用户凭证,并将其指定为: var check = function(req, res, next){/* checking user cred*/} 我使用它就像: app.use(check); 或者像: app.get("some url", check, function(req, res, next){}) 但是只有一件事让我困惑,有时候,我需要跳过同一个处理程序中的check来取决于req.query, 我不知道是否有一种方法(或devise模式)来做到这一点,而没有指定这个条件检查里面检查中间件我只是想检查模块化,专注于其商业逻辑)? 谢谢