【问题标题】:Request parameter appended to URL twice in express app在快速应用程序中两次附加到 URL 的请求参数
【发布时间】:2026-01-01 07:25:05
【问题描述】:

app.js 中的相关行:

var contact = require('./routes/contact');

app.all('/:lang/*', function(req, res, next){
  var selectedLang = req.params.lang;
  i18n.setLocale([req, res.locals], selectedLang);
  res.locals.language = selectedLang;
  next();
});

app.use('/contact', contact);
app.use('/:lang/contact', contact);

来自 nav.hbs 的菜单链接:

<li><a href="{{language}}/contact">{{{__ "Kapcsolat"}}}</a></li>

我得到的输出:

http://127.0.0.1:3000/en/en/contact

预期输出:

http://127.0.0.1:3000/en/contact

出了什么问题?

【问题讨论】:

    标签: javascript node.js express internationalization handlebars.js


    【解决方案1】:

    更改您的 nav.hbs 以将其用于您的菜单链接:

    <li><a href="/{{language}}/contact">{{{__ "Kapcsolat"}}}</a></li>
    

    【讨论】:

    • 谢谢!就是这样!我在 app.js 中添加了这个而不是 res.locals.language = '/' + selectedLang;,因为有时 url 只是 http://127.0.0.1:3000/contact(使用默认语言)。