如何在EJSfilter中获取请求对象?

我想在我的EJSfilter中获取请求对象。 可能吗?

我的filter非常简单,但我需要看到哪个区域被触发(通过urlpath)来提供正确的资产。 我相信我可以从请求中获取url,但是如何获取它?

我开始编写中间件函数,它将在函数范围中设置有趣的值,但是它不起作用,因为在ejsfilter被触发之前,值可以被其他请求改变。

我知道我可以用域来处理它,但我还不熟悉它们,甚至我的节点版本也不支持它。

是否有一个简单的方法来获取eqsfilter中的req对象?

这听起来是你的中间件解决scheme是在正确的轨道上,但你用app.locals而不是res.locals

 app.use(function(req, res, next) { res.locals.request = req; next(); }); 

app.locals是一个应用程序范围的存储,并且会被每个新的请求覆盖。 res.locals是每个请求的唯一范围。

如果你想在你的filter中使用request ,你仍然必须把它作为parameter passing:

 <%=: myvar|myfilter:request %> 

很明显,不是传递整个请求对象,只需要使用.url属性,如果这是你在filter中唯一需要的东西。