当前位置: 首页 > 面试题库 >

将Express.js 2迁移到3,特别是将app.dynamicHelpers()迁移到app.locals.use?

蒙奇
2023-03-14
问题内容

将Express.js从版本2更新到了版本3,以下调用app.dynamicHelpers({..})中断了,因为它不再存在于V3中:

app.dynamicHelpers({

    request: function(req){
      return req
    },
    ...etc.
});

有一个迁移指南说:

  • app.dynamicHelpers() (使用中间件+ res.locals)

但是我很困惑如何做到这一点。是否有一个更具体的示例说明如何进行迁移?

相关的SO post: Node.js Express3.0


问题答案:

我有同样的问题 session.user ,只是通过了解该app.use功能必须是固定的, 配置的一部分,而不是其原来的位置。

之前:

app.configure();
app.dynamicHelpers({
  user: function(req, res) {
    return req.session.user;
  }
});

后:

app.configure(function(){
  //...
  app.use(function(req, res, next){
    res.locals.user = req.session.user;
    next();
  });
  //...
});

对于Flash看看connect-flash



 类似资料:
  • 我正在使用OpenJDK 12中的Nashorn JS引擎。纳肖恩似乎遭到了反对。我正在寻找可用的替代方案。我找到了GraalVM,但我不确定这是不是最好的。如何从Java执行GraalVM JavaScript?你有什么例子吗? Nashorn用的是Java: 在Nashorn中,我创建了一个WrappedMongoDatabase,它扩展了AbstractJSObject。在那里,我添加了一些

  • 我正试图从maven迁移到gradle,但CheckStyle出现了一个奇怪的错误。 这是我得到的错误 如何让gradle使用最新版本的CheckStyle?值得注意的是,我的使用了maven checkstyle 6.10.1和6.8

  • 我要迁移一个JavaApplet通过JNLP启动,作为一个Java的Web Start应用程序,并遇到一些麻烦/误解... 我得到的资源之一是这样的:6迁移JavaAppletJavaWeb Start和JNLP: 让我们开始吧,但是: 目前,该应用程序是一个小程序(),过去是通过将小程序标记嵌入到HTML中来启动的,小程序标记指的是JNLP。 现在,由于所有浏览器都放弃了对小程序的支持,我应该将

  • Angular 是使用 TypeScript 构建的,并且支持向 Angular 提供元信息的装饰器。 TypeScript 的装饰器会让语法感觉更加“自然”,尽管有可能使用 Angular 没有的功能。

  • 我正在从3迁移到Hibernate 5.0.3.final。在3.x中,我使用joda-time在oracle DB中持久化LocalDateTime。现在我看到Hibernate5不支持Joda-Time。请告诉我最好的选择是什么? 下面是代码示例。