Google-api-nodejs-client: TypeError: преобразование круговой структуры в JSON

Созданный на 3 февр. 2018  ·  3Комментарии  ·  Источник: googleapis/google-api-nodejs-client

Привет, Девс,

В последней версии 25 есть ошибка в предсказании ответа CloudML. Ответ имеет круговую структуру и не может быть преобразован в JSON. Вот мой код:

const google = require('googleapis');
const ml = google.ml('v1');

function auth(callback) {
    google.auth.getApplicationDefault(function (err, authClient) {
        if (err) {
            return callback(err);
        }
        if (authClient.createScopedRequired && authClient.createScopedRequired()) {
            // Scopes can be specified either as an array or as a single,
            // space-delimited string.
            authClient = authClient.createScoped([
                'https://www.googleapis.com/auth/cloud-platform',
            ]);
        }
        callback(null, authClient);
    });
}

/**
 * <strong i="7">@param</strong> {Function} callback Callback function.
 */
function getMLPrediction(data, callback) {
    auth(function (err, authClient) {
        if (err) {
            return callback(err);
        }
        ml.projects.predict({
            auth: authClient,
            name: 'projects/***/models/census',
            resource: data,
        }, (e, prediction) => {
            if (e) {
                return callback(e);
            }
            console.log(JSON.stringify(prediction)); <--------- This will crash
            console.log('Prediction:', prediction);
            callback(null, prediction);
        });
    });
}

Я вернулся к ^ 24.0.0, и все работает нормально.

Добрые пожелания,
eduDorus

Самый полезный комментарий

Привет! Обратный вызов возвращает объект response , который имеет поле данных. Вместо этого:

}, (e, prediction) => {
            if (e) {
                return callback(e);
            }
            console.log(JSON.stringify(prediction)); <--------- This will crash
            console.log('Prediction:', prediction);
            callback(null, prediction);
        });

Сделай это!

}, (e, res) => {
            if (e) {
                return callback(e);
            }
            console.log(res.data); <--------- This will work :)
            console.log('Prediction:', res.data);
            callback(null, res.data);
        });

Надеюсь это поможет!

Все 3 Комментарий

Привет! Обратный вызов возвращает объект response , который имеет поле данных. Вместо этого:

}, (e, prediction) => {
            if (e) {
                return callback(e);
            }
            console.log(JSON.stringify(prediction)); <--------- This will crash
            console.log('Prediction:', prediction);
            callback(null, prediction);
        });

Сделай это!

}, (e, res) => {
            if (e) {
                return callback(e);
            }
            console.log(res.data); <--------- This will work :)
            console.log('Prediction:', res.data);
            callback(null, res.data);
        });

Надеюсь это поможет!

@JustinBeckwith Привет,

`` ''
const serviceRequest = calendarService.events.list ({
calendarId: calendar_id,
timeMin: (новая Дата ()). toISOString (),
maxРезультаты: 50,
singleEvents: правда,
orderBy: 'startTime'
})

пытаться {
ждать serviceRequest
} catch (e) {
if (e.status) res.status (e.status) .send (e.statusText)
logger.error (e)
res.status (500) .send (e)
}
`` ''

@uptownhr Если вы видите исключение при вызове logger.error(e) , мне интересно, вызывает ли ваш регистратор JSON.stringify на 'e'. Я отправил в Axios PR по этому поводу, он может быть информативным.

https://github.com/axios/axios/pull/1625

В вашем случае вы можете обойтись с этим или чем-то подобным:

logger.error({message: e.message, stack: e.stack})

Мне, по-видимому, очень трудно помнить об этом, а обработка ошибок созрела из-за отсутствия покрытия кода, поэтому я отправил PR выше. (Важно отметить, что отдельно заголовки запросов в AxiosErrors, сериализованные console.log() содержат токены-носители, и мне не нравится видеть их в журналах.)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги