Привет, Девс,
В последней версии 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);
});
Надеюсь это поможет!
@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()
содержат токены-носители, и мне не нравится видеть их в журналах.)
Самый полезный комментарий
Привет! Обратный вызов возвращает объект
response
, который имеет поле данных. Вместо этого:Сделай это!
Надеюсь это поможет!