Проблема в том, что параметры вашего запроса не добавляются правильно.
Удалите + '.json'
из второго аргумента axios.get
.
Я удивлен, что это не так выдает ошибку самостоятельно, но очевидно, что ax ios просто подыгрывает и добавляет 0=[object+Object].json
, превращая ваш URL в: https://www.mgewholesale.com/ecommerce/Bags%20and%20Cases.cfm?0=[object+Object].json
Я не могу добавить комментарий к другому ответу, но это неверно, поскольку вы правильно используете цепочку обещаний (.then
) после вызова .get()
.
Редактировать:
Похоже, что для этого конкретного URL вам понадобятся дополнительные заголовки, а также возможность поддерживать соединение после первоначального ответа:
const axios = require('axios'); //15k (gzipped: 5.1k)
const cheerio = require('cheerio');
const https = require('https');
let fs = require('fs');
const httpsAgent = new https.Agent({ keepAlive: true });
axios
.get('https://www.mgewholesale.com/ecommerce/Bags%20and%20Cases.cfm', {
httpsAgent,
params: {
cat_id: '876',
},
headers: {
'Accept-Encoding': 'gzip, deflate, br',
},
//is the same as set the entire url
})
.then((res) => {
let status = res.status;
console.log(status);
//This should now output the html content
console.log(res.data);
})
.catch(err => console.error(err));
Редактировать 2:
В приведенный выше код добавлен правильный метод обработки ошибок.
Редактировать 3:
Убедитесь, что все переменные, которые вы регистрируете в своем блоке .then()
, определены. Кроме того, чтобы получить больше полезных ошибок, добавьте .catch()
в конце:
.then((res) => {
console.log(res.data);
//this triggers the error
let status = res.status;
console.log(status);
//Status 200
console.log(res);
//This brings the entire response with data object filled
})
.catch(err => console.error(err));