рдирдорд╕реНрддреЗ,
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рд╛рдЗрди 213 рдкрд░ 'json_formatter.js' рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ, рдиреАрдЪреЗ рд╕реНрдирд┐рдкреЗрдЯ рджреЗрдЦреЗрдВ:
if (status === _status2.default.FAILED && exception) {
data.result.error_message = exception.stack || exception;
}
рдХрд┐рд╕реА рднреА рдЕрд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдЖрдИрдПрдордУ рдпрд╣ рдЕрдкрд╡рд╛рдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрдо рд╕реЗ рдХрдо рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рднреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЪрд╛рд▓реВ/рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдХреНрдпрд╛ рдХреЛрдИ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдореИрдВ CucumberJS рдХреЗ рд╕рд╛рде NightwatchJS рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ, рдореЗрд░рд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡рд┐рд╡рд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
рдиреЛрдб - v8.7.0
рдЦреАрд░рд╛ - v3.03
рдирд╛рдЗрдЯрд╡реЙрдЪ - v0.9.16
рдирд╛рдЗрдЯрд╡реЙрдЪ рдХрдХрдбрд╝реА - v8.2.2
рдмреНрд░рд╛рдЙрдЬрд╝рд░ - рдХреНрд░реЛрдо v61.0.3163.10
рдХреНрд░реЛрдо рдбреНрд░рд╛рдЗрд╡рд░ - v2.32
рд╕реЗрд▓реЗрдирд┐рдпрдо - v3.5.3
рдУрдПрд╕ - рд╡рд┐рдВрдбреЛрдЬ 7
рдореИрдВрдиреЗ рд▓рд╛рдЗрди 86 рдкрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рддреЗ рд╣реБрдП рдЬреЗрд╕рди рдлреЙрд░реНрдореЗрдЯрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдПрдХ рдкреНрд░рддрд┐ рд╕рдВрд▓рдЧреНрди рдХреА рд╣реИ
рд╕рд╛рджрд░,
рдиреЗрд╡рд┐рд▓ рд╣рдореНрдлреНрд░реА
рдХреНрдпрд╛ рдЗрд╕ рдмрдЧ рдХреЛ рдХрд┐рд╕реА рдФрд░ рдиреЗ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ?
рдореИрдВ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реВрдВ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИред Json_formatter @ 213 рдореЗрдВ рдХреЛрдб рдХреА рдкрдВрдХреНрддрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
data.result.error_message = exception.message + exception.stack;
рдФрд░ рдирд╣реАрдВ
data.result.error_message = exception.stack || exception;
рдЗрд╕ рддрд░рд╣ рдЖрдкрдХреЛ рджрд╛рд╡рд╛ рддреНрд░реБрдЯрд┐ рдФрд░ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдорд┐рд▓рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рджреЗрдЦреА рд╣реИ, рдХреГрдкрдпрд╛ рдХреЛрдИ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ?
рдХреНрд░реЛрдо рдФрд░ рдиреЛрдб рдореЗрдВ рдпрд╣ рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рд╣реИ рдХрд┐ Error: <message>
рд╕реНрдЯреИрдХ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд╣реИред Error: <message>
error.toString()
рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
let msg = exception
if (exception.stack) {
msg = exception.stack
if (!_.includes(msg, error.toString()) {
msg = error.toString() + '\n' + msg
}
}
data.result.error_message = msg
рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдЯреИрдХ рдореЗрдВ рд╕рдлрд╛рд░реА рдореЗрдВ рд╕рдВрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдХреНрд░реЛрдо 61 рдФрд░ рдиреЛрдб 8 рдореЗрдВ рд╕реНрдЯреИрдХ рдореЗрдВ рд╕рдВрджреЗрд╢ рджреЗрдЦрддрд╛ рд╣реВрдВред
рдореБрдЭреЗ рдирд╛рдЗрдЯрд╡реЙрдЪ рдХрдХрдбрд╝реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ (рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрдХреНрд╕рд░ рдПрдХ рд╕реНрдЯреИрдХ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╣реЛрддрд╛ рд╣реИ)ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдмрдЧ рд╣реИ
let error_message = _.includes(exception.stack, exception.message) ? '' : exception.message + '\n';
error_message += exception.stack;
data.result.error_message = error_message || exception;
рдпрджрд┐ рдЕрдкрд╡рд╛рдж рд╕рдВрджреЗрд╢ рдХреЛ рд╕реНрдЯреИрдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдмрд┐рдирд╛ рджреЛрд╣рд░рд╛рд╡ рдХреЗ рдПрдХ error_message рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛ рдЕрдкрд╡рд╛рдж рд╕рдВрджреЗрд╢ рдкрд╣рд▓реЗ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдирдорд╕реНрддреЗ,
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрддреНрд╡ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░рдгред
рдЙрддреНрдкрдиреНрди json рд░рд┐рдкреЛрд░реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, error_message рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдПрдХ рд╡рд╕реНрддреБ рд╣реИред рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдпрд╣рд╛рдВ рдПрдХрд░реВрдкрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ? рдЗрд╕ рдкрд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдЬрд╛рдирдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рд╣реИред
рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо json рд╕реЗ html рд░рд┐рдкреЛрд░реНрдЯ рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдордп, рдХрдХрдбрд╝реА-рдПрдЪрдЯреАрдПрдордПрд▓-рд░рд┐рдкреЛрд░реНрдЯрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрд╕ error_message рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╣рдо рдЗрд╕реЗ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ html рд░рд┐рдкреЛрд░реНрдЯрд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЧреЗ рдЬрд╛рдХрд░, рд╣рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдХрд╛рд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдВрддрд░ рдорд┐рд▓рддрд╛ рд╣реИред рдЬрдм рднреА рд╣рдо webdriverio рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд░рд┐рдкреЛрд░реНрдЯ рдЬрдирд░реЗрд╢рди рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди webdriverjs-angular рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, report.json рдореЗрдВ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ error_message рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ html рд░рд┐рдкреЛрд░реНрдЯ рдЬрдирд░реЗрдЯ рдХрд░рддреЗ рд╕рдордп рд╡рд┐рдлрд▓рддрд╛ рд╣реЛрдЧреАред
рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд╛рди рдкрд░ рдЙрдард╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рдпрд╣ рджреЗрдЦрдирд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо error_message рдкреНрд░рдХрд╛рд░ рдкрд░ рдПрдХрд░реВрдкрддрд╛ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдзрдиреНрдпрд╡рд╛рдж!
рд╣рд╛рдп рдлрд┐рдирд░реБрдЗрдУрдирд╛,
рдХрдХрдбрд╝реА/lib/formatter/json_formatter.js рдХреЗ рдЖрдкрдХреЗ рд╕реНрдерд╛рдиреАрдп рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд▓рд╛рдЗрди 213 рдХреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ:
let error_message = _lodash.includes(exception.stack, exception.message) ? '' : exception.message + '\n';
error_message += exception.stack;
data.result.error_message = error_message || exception;
рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рд╕реБрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдХрд░реНрд╖рдг рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рд╣рд╛рдп @ рд╣рдореНрдлреНрд░реЗрдпрди
рджрд░рдЕрд╕рд▓, рдЙрдкрд░реЛрдХреНрдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред рдореИрдВ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдЯреИрдХ рдкрд░ рдПрдХ if рднреА рдЬреЛрдбрд╝реВрдВрдЧрд╛, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЬреЛрдбрд╝ рд░рд╣рд╛ рдерд╛ред
javascript
let error_message = _lodash.includes(exception.stack, exception.message) ? '' : exception.message + '\n';
if (exception.stack) {
error_message += exception.stack;
}
data.result.error_message = error_message || exception;
рдзрдиреНрдпрд╡рд╛рдж!
рдореИрдВрдиреЗ рдпрд╣ рдорд╛рди рд▓рд┐рдпрд╛ рдХрд┐ рдЕрдкрд╡рд╛рдж рд╕рдВрджреЗрд╢ рдФрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рд╡рд╕реНрддреБ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдРрд╕рд╛ рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЫреЛрдЯреЗ рд╕рдорд╛рдпреЛрдЬрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
let msg = exception.message || '';
let stack = exception.stack || '';
msg = _.includes(stack, msg) ? '' : (msg + '\n');
data.result.error_message = (msg + stack) || exception;
рдпрджрд┐ рд╕рдВрджреЗрд╢ рдпрд╛ рд╕реНрдЯреИрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИрдВ рддреЛ рдпрд╣ рдХреЛрдб "рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд" рдХреЛ error_message рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рдпрджрд┐ рджреЛрдиреЛрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдпрд╛ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИрдВ рддреЛ рдЕрдкрд╡рд╛рдж рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ error_message рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдЧрд░ рд╣рдо рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ error_message рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╣рдо JSON.stringify
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
let msg = exception.message || '';
let stack = exception.stack || '';
msg = _.includes(stack, msg) ? '' : (msg + '\n');
data.result.error_message = (msg + stack) || JSON.stringify(exception);
@finaruioana рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдареАрдХ рд░рд╣реЗрдЧрд╛ (рд╕реНрдерд╛рдиреАрдп рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ _lodash
рдмрдЬрд╛рдп _
)
let msg = exception.message || '';
let stack = exception.stack || '';
msg = _lodash.includes(stack, msg) ? '' : (msg + '\n');
data.result.error_message = (msg + stack) || exception;
рд╣рд╛рдБ, рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ @innocentivред рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред
@innocentiv , рдореИрдВ рдпрд╣ рднреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреНрд░реЛрдо рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛рдиреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯ рдЕрдк рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕:
рдиреЛрдбрдЬ: v8.9.0
рдХрдХрдбрд╝реАрдЬ: рд╡реА 3.1.0
рдирд╛рдЗрдЯрд╡реЙрдЪ-рдХрдХрдбрд╝реА: v0.9.16
рд╕реЗрд▓реЗрдирд┐рдпрдо-рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди: v3.4.0
рдпрд╛рдиреА рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░: v3.4.0
рдХреНрд░реЛрдо рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░: v2.33
рдЫрд┐рдкрдХрд▓реА (рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕) рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░: v0.19.1
рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рд╕реБрдзрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВрдЧреЗ?
@humfreyn рдкреБрд▓ рдЕрдиреБрд░реЛрдз: #973
рдореИрдВрдиреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕрдкрд╡рд╛рдж рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрднреА рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
if (_lodash2.default.isString(exception)) {
data.result.error_message = exception;
} else {
var _exception$message = exception.message,
message = _exception$message === undefined ? '' : _exception$message,
_exception$stack = exception.stack,
stack = _exception$stack === undefined ? '' : _exception$stack;
message = _lodash2.default.includes(stack, message) ? '' : message + '\n';
data.result.error_message = message + stack || JSON.stringify(exception);
}
рдЗрд╕ рдереНрд░реЗрдб рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдХреГрдкрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╣рд╛рдп рдлрд┐рдирд░реБрдЗрдУрдирд╛,
рдХрдХрдбрд╝реА/lib/formatter/json_formatter.js рдХреЗ рдЖрдкрдХреЗ рд╕реНрдерд╛рдиреАрдп рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд▓рд╛рдЗрди 213 рдХреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ:
рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рд╕реБрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдХрд░реНрд╖рдг рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред