Hei Devs ،
في الإصدار الأحدث 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 () ،
maxResults: 50 ،
الأحداث: صحيح ،
OrderBy: "startTime"
})
محاولة {
في انتظار الخدمةطلب
} catch (e) {
إذا (e.status) res.status (e.status) .send (e.statusText)
خطأ المسجل (هـ)
res.status (500). إرسال (هـ)
}
""
uptownhr إذا كنت ترى الاستثناء عند استدعاء logger.error(e)
، أتساءل عما إذا كان المسجل الخاص بك يتصل بـ JSON.stringify
على 'e'. لقد قدمت خطابًا عامًا خاصًا إلى Axios بخصوص هذا الأمر ، وقد يكون ذلك مفيدًا.
https://github.com/axios/axios/pull/1625
في حالتك ، قد تتمكن من التعامل مع هذا أو شيء مشابه:
logger.error({message: e.message, stack: e.stack})
يبدو أنه من الصعب حقًا بالنسبة لي أن أتذكر القيام بذلك ، ومعالجة الأخطاء أصبحت جاهزة لتغطية الكود المفقود ، لذلك قمت بتقديم العلاقات العامة أعلاه. (الأهم من ذلك ، بشكل منفصل ، أن رؤوس الطلبات في AxiosErrors المسلسلة بواسطة console.log()
تحتوي على رموز حامل ، ولا أرغب في رؤية تلك الرموز في السجلات.)
التعليق الأكثر فائدة
تحيات! يقوم رد الاتصال بإرجاع كائن
response
، والذي يحتوي على حقل بيانات. بدلا من هذا:افعل هذا!
أتمنى أن يساعدك هذا!