Я урезал ваш код, и следующий фрагмент дает мне правильные перенаправления:
const express = require('express');
const app = express();
app.post('/search-location', async (req,res) => {
try {
return res.redirect('https://www.google.com')
} catch (e) {
res.status(500).send(e)
}
})
app.listen(9000, () => {
console.log("server is up and running on 9000");
})
curl -X POST localhost:9000/search-location
* Trying ::1:9000...
* Connected to localhost (::1) port 9000 (#0)
> POST /search-location HTTP/1.1
> Host: localhost:9000
> User-Agent: curl/7.69.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Found
< X-Powered-By: Express
< Location: https://www.google.com
< Vary: Accept
< Content-Type: text/plain; charset=utf-8
< Content-Length: 44
< Date: Thu, 07 May 2020 16:37:00 GMT
< Connection: keep-alive
<
* Connection #0 to host localhost left intact
Found. Redirecting to https://www.google.com
Ваша проблема, скорее всего, связана с location = await req.body.location
, поскольку req.body.location
не является обещанием ( просто проанализированный клиентом объект тела POST, его нельзя ожидать '
Возможно, вы хотели обернуть его в функцию:
location = await computeFunction(req.body.location)