为什么 add firebase serve 命令会向 url 添加一些附加信息?

Why does add firebase serve command some additional info to url?

我的问题是关于在本地主机(端口:5000、5001)上测试我的代码。我在终端 windows:

中使用下面的命令
sudo firebase serve

它会在准备好后提供链接:

hosting[helloapp]: Serving hosting files from: public
hosting[helloapp]: Local server: http://localhost:5000
functions: app: http://localhost:5001/helloapp/us-central1/app

好像还可以。但是当我尝试这些功能时,某些 url 无法正常工作。 例如:如果 url 的后端路径中有一个重定向代码消失了,'helloapp/us-central1/app'。托管 url 工作得很好。我不知道为什么 functions:app URL 有一些额外的部分?

后端index.js

app.use('/', express.static(path.join(__dirname, '../public'))); 
app.set('view engine', 'ejs'); 
app.set('views', path.join(__dirname, './app_server/views')); 

重定向代码:

catch(error => {
  console.log('cant access', error);
  res.redirect('/login');
}    

问题

重定向前的URL:

http://localhost:5001/helloapp/us-central1/app

重定向后的URL:

http://localhost:5001/login

URL,我预计

http://localhost:5001/helloapp/us-central1/app/login

以斜杠开头的部分 URL 被解释为相对于原始 URL 主机的路径。这些有时称为 "absolute path reference"。它们有效地擦除 url 的整个路径并从您提供的路径重新开始。

(read more about that)

如果您希望重定向 URL 构建现有路径,您只需将所需的路径部分附加到原始路径(在 req.path 中找到)

res.redirect(req.path + '/login');

这应该将路径组件添加到现有 URL 的末尾,而不是删除现有路径。