Ответ Axios теперь строка (вместо объекта) после миграции Webpack4 - PullRequest
0 голосов
/ 02 апреля 2019

Мне удалось перенести мое приложение в Webpack4 (из 3), но я застрял со странной проблемой.Поле API response.data изменено с объекта на строку (из json).Я мог бы, вероятно, просто запустить JSON.parse (response.data), но я бы скорее выяснил, почему это произошло, и исправил бы это

Я использую redux-saga и axios.Приведенный ниже код саги не изменился.Я изменил приложение как можно меньше, чтобы заставить его скомпилировать.Axios имеет ту же версию

function login(payload) {
    const url = __API__ + 'xx/login'
    var params = new URLSearchParams()
    for (var property in payload) {
        if (payload.hasOwnProperty(property)) {
            params.append(property, payload[property])
        }
    }

    return axios.post(url, params, { headers: { crossDomain: true, 'content-type': 'application/x-www-form-urlencoded;charset=utf-8' } })
    .then(response => response)
    .catch(err => { throw err })
}

function* loginSaga({ payload }) {
    try {
        const response = yield call(login, payload)
        const { data } = response
        yield put(Actions.loginSucceded(data))
    }
    catch (err) {
        if (err.hasOwnProperty("message")) {
            yield put(Actions.loginFailed(err.message))
            return
        }
        yield put(Actions.loginFailed("Unknown network error"))
    }
}

Я ожидаю, что ответ API будет объектом, а response.data также будет объектом.Но после миграции response.data теперь является строкой (из json)

...