Возможный отказ необработанного обещания, сетевая ошибка при использовании axios

Я пытаюсь отправить данные JSON с помощью react-native, axios и Expo, но когда я нажимаю «Отправить» в своем приложении, я получаю следующее предупреждение:

Возможный отказ необработанного обещания, ошибка: сетевая ошибка

Мой API правильно получает уведомление (JSON), когда я пытаюсь отправить его через POSTman, но когда я пытаюсь отправить его с помощью axios, я получаю указанное выше предупреждающее сообщение, поэтому, возможно, реакция не отправляет данные правильно.

export default class NotificationsInput extends React.Component {

state = {
    token: '',
    title: '',
    body: ''
}

handleToken = event => {
    this.setState({ token: event.target.value })
}

handleTitle = event => {
    this.setState({ title: event.target.value })
}

handleBody = event => {
    this.setState({ body: event.target.value })
}

handleSubmit = event => {
    event.preventDefault();

    let notification = JSON.stringify({
        token: this.state.token,
        title: this.state.title,
        body: this.state.body
    })

    let headers = {
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        }

    }
    axios.post(`http://127.0.0.1:8000/send_push_message/`, notification, headers)
        .then(res => {
            console.log(res);
            console.log(res.data)
        })
        .then(error => console.log(error));

}

render() {
    return (
        <View>
            <TextInput onChange={this.handleToken}
                style={{ height: 25, width: 200, borderColor: 'black', borderWidth: 1 }}
            />
            <TextInput onChange={this.handleTitle}
                style={{ height: 40, width: 200, borderColor: 'black', borderWidth: 1 }}
            />
            <TextInput onChange={this.handleBody}
                style={{ height: 40, width: 200, borderColor: 'black', borderWidth: 1 }}
            />
            <Button onPress={this.handleSubmit} title="Send">Send</Button>
        </View>
    )
}

}

Изменить:

Я добавил функцию catch (), но теперь ошибка только Network Error в консоли.

handleSubmit = event => {
    event.preventDefault();

    let notification = JSON.stringify({
        token: this.state.token,
        title: this.state.title,
        body: this.state.body
    })

    let headers = {
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        }

    }
    axios.post(`http://127.0.0.1:8000/send_push_message/`, notification, headers)
    .then(res => {
        console.log(res);
        console.log(res.data)
    })
    .catch(error => console.log(error));

}

person Biel Borba    schedule 25.09.2018    source источник
comment
какое предупреждающее сообщение вы получаете   -  person aravind_reddy    schedule 25.09.2018
comment
возможное отклонение необработанного обещания (id: 0): Ошибка: ошибка сети   -  person Biel Borba    schedule 25.09.2018
comment
ваша ошибка предполагает, что вы не обрабатываете отклонение обещания, которое заключается в добавлении .catch, как упоминалось другими пользователями, также проверьте это: stackoverflow.com/questions/38842499/   -  person aravind_reddy    schedule 25.09.2018
comment
после добавления блока .catch какую ошибку вы получаете?   -  person aravind_reddy    schedule 25.09.2018
comment
только сетевая ошибка   -  person Biel Borba    schedule 25.09.2018
comment
и что это ? укажите точную ошибку!   -  person aravind_reddy    schedule 25.09.2018
comment
я думаю, что я отправляю неправильно или серверная часть не принимает, консоль показывает только сетевую ошибку и некоторые ошибки в модулях узлов   -  person Biel Borba    schedule 25.09.2018
comment
так что сверьтесь с этим или задайте другой вопрос по этому поводу   -  person aravind_reddy    schedule 25.09.2018
comment
Возможный дубликат React Native: возможное необработанное отклонение обещания   -  person aravind_reddy    schedule 25.09.2018


Ответы (2)


Я вижу, вы связали двоих, и это неверно. Вам нужен блок catch для перехвата сетевых ошибок. Взгляните ниже

  axios.post(`http://127.0.0.1:8000/send_push_message/`, notification, headers)
    .then(res => {
        console.log(res);
        console.log(res.data)
    })
    .catch(error => console.log(error));
person Shubham Gupta    schedule 25.09.2018
comment
@Rik я имел в виду в его коде. он пытался поймать ошибку. потом - person Shubham Gupta; 25.09.2018
comment
Я попытался добавить уловку, но это только привело к появлению ошибки в моей консоли - person Biel Borba; 25.09.2018
comment
@BielBorba, это правильно, что означает, что ваш звонок отклоняется из бэкэнда. Я думаю, что он ищет некоторые данные в полезной нагрузке, которые он не находит и не работает. medium.com/@dtinth/ - person Shubham Gupta; 25.09.2018

Используйте catch вместо then для обработки ошибок.

.catch(error => console.log(error));
person Rik    schedule 25.09.2018
comment
Я пробовал, но все равно получаю ту же ошибку на консоли - person Biel Borba; 25.09.2018
comment
Включен ли CORS на сервере? - person Rik; 25.09.2018