Возникли проблемы с res.redirect в Express - PullRequest
0 голосов
/ 07 мая 2020

Я пытался ввести свое местоположение из формы поиска, и он регистрируется в консоли, но res.redirect не переводит меня на новый URL-адрес. (Данный URL был просто примером)

const express = require('express');
const cors = require('cors');

// Utils
const geocode = require('./utils/geocode');
const forecast = require('./utils/weatherstack');

const app = express();

app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cors())

let location;

app.post('/search-location', async (req,res) => {
    try {
        location = await req.body.location
        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");
})

1 Ответ

0 голосов
/ 07 мая 2020

Я урезал ваш код, и следующий фрагмент дает мне правильные перенаправления:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...