Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有可选第一个参数的快速捕获所有路线_Javascript_Node.js_Express - Fatal编程技术网

Javascript 带有可选第一个参数的快速捕获所有路线

Javascript 带有可选第一个参数的快速捕获所有路线,javascript,node.js,express,Javascript,Node.js,Express,如何实现将在每个请求上调用的路由中间件,但同时它应该捕获可选的lang参数 到目前为止,我尝试了下面的代码,但不起作用。路径匹配中最可能出现的问题/:lang*?。在下面的代码中,lang param未定义: const SUPPORTED_LOCALES = ['en', 'fr', 'de']; expressServer.use('/:lang*?', function(req, res, next) { // check if known locale, if no then f

如何实现将在每个请求上调用的路由中间件,但同时它应该捕获可选的lang参数

到目前为止,我尝试了下面的代码,但不起作用。路径匹配中最可能出现的问题/:lang*?。在下面的代码中,lang param未定义:

const SUPPORTED_LOCALES = ['en', 'fr', 'de'];

expressServer.use('/:lang*?', function(req, res, next) {
   // check if known locale, if no then fallback to 'en'
   const locale = SUPPORTED_LOCALES.includes((req.params.lang)) ? req.params.lang : 'en'; 
   req.locale = locale;
   next();
}
此中间件应捕获所有请求,即使没有提供区域设置,也应仅捕获域名。它将退回到默认区域设置en:

你可以只使用app.use而不使用路径

app.usefunction req,res,next{ console.log'Time:%d',Date.now 下一个
}是的,谢谢。我只是不想麻烦处理req.params.split[1]。还需要检查数组长度是否大于>=1。我不想写太多代码。
example.com
example.com/de/blog/2
example.com/fr
example.com/en
example.com/en/blog/1
example.com/blog/1