File tree Expand file tree Collapse file tree 5 files changed +37
-10
lines changed
Expand file tree Collapse file tree 5 files changed +37
-10
lines changed Original file line number Diff line number Diff line change 1+ import * as lodash from 'lodash' ;
12import * as util from 'util' ;
23
34import { ValidationError } from './definitions' ;
@@ -9,11 +10,25 @@ export const ERROR_IPC_UNKNOWN_PROCEDURE = 'ERR_ICF_IPC_UNKNOWN_PROCEDURE';
910
1011export abstract class BaseError extends Error {
1112 abstract readonly name : string ;
13+ message : string ;
14+ stack : string ;
1215 code ?: string ;
16+ error ?: Error ;
1317 exitCode ?: number ;
1418
19+ constructor ( message : string ) {
20+ super ( message ) ;
21+ this . message = message ;
22+ this . stack = ( new Error ( ) ) . stack || '' ;
23+ }
24+
1525 toString ( ) : string {
16- return util . inspect ( this ) ;
26+ const repr = lodash . pick ( this , lodash . pull ( lodash . keys ( this ) , 'error' ) ) ;
27+
28+ return (
29+ `${ this . name } : ${ this . message } ${ util . inspect ( repr , { breakLength : Infinity } ) } ${ this . stack } ` +
30+ `${ this . error ? `\nWrapped: ${ this . error . stack ? this . error . stack : this . error } ` : '' } `
31+ ) ;
1732 }
1833
1934 inspect ( ) : string {
Original file line number Diff line number Diff line change @@ -3,7 +3,6 @@ import { readPackageJsonFile } from '@ionic/cli-framework/utils/node';
33import { processExit } from '@ionic/utils-process' ;
44import * as Debug from 'debug' ;
55import * as path from 'path' ;
6- import * as util from 'util' ;
76
87import { IonicNamespace } from './commands' ;
98import { IPCMessage , IonicContext , IonicEnvironment } from './definitions' ;
@@ -172,7 +171,11 @@ export async function run(pargv: string[]): Promise<void> {
172171 } else if ( err instanceof BaseError ) {
173172 ienv . log . error ( err . message ) ;
174173 } else {
175- ienv . log . rawmsg ( failure ( util . inspect ( err ) ) ) ;
174+ ienv . log . msg ( failure ( String ( err . stack ? err . stack : err ) ) ) ;
175+
176+ if ( err . stack ) {
177+ debug ( failure ( String ( err . stack ) ) ) ;
178+ }
176179 }
177180 }
178181}
Original file line number Diff line number Diff line change @@ -55,9 +55,9 @@ export class ProjectDetailsError extends BaseException {
5555 /**
5656 * The underlying error that caused this error.
5757 */
58- cause ?: Error
58+ readonly error ?: Error
5959 ) {
60- super ( msg , { cause } ) ;
60+ super ( msg ) ;
6161 }
6262}
6363
@@ -193,7 +193,7 @@ export class ProjectDetails {
193193 if ( e1 ) {
194194 log . error (
195195 `Error while loading config (project config: ${ strong ( prettyPath ( result . configPath ) ) } )\n` +
196- `${ e1 . cause ? `${ e1 . message } : ${ failure ( e1 . cause . toString ( ) ) } ` : failure ( e1 . message ) } . ` +
196+ `${ e1 . error ? `${ e1 . message } : ${ failure ( e1 . error . toString ( ) ) } ` : failure ( e1 . message ) } . ` +
197197 `Run ${ input ( 'ionic init' ) } to re-initialize your Ionic project. Without a valid project config, the CLI will not have project context.`
198198 ) ;
199199
Original file line number Diff line number Diff line change @@ -35,11 +35,20 @@ export function convertPATH(path = process.env.PATH || ''): string {
3535
3636export class SubprocessError extends Error {
3737 readonly name = 'SubprocessError' ;
38+ message : string ;
39+ stack : string ;
3840
3941 code ?: typeof ERROR_COMMAND_NOT_FOUND | typeof ERROR_NON_ZERO_EXIT | typeof ERROR_SIGNAL_EXIT ;
42+ error ?: Error ;
4043 output ?: string ;
4144 signal ?: string ;
4245 exitCode ?: number ;
46+
47+ constructor ( message : string ) {
48+ super ( message ) ;
49+ this . message = message ;
50+ this . stack = ( new Error ( ) ) . stack || '' ;
51+ }
4352}
4453
4554export interface SubprocessOptions extends SpawnOptions { }
@@ -163,12 +172,13 @@ export class Subprocess {
163172 let err : SubprocessError ;
164173
165174 if ( error . code === 'ENOENT' ) {
166- err = new SubprocessError ( 'Command not found.' , { cause : error } ) ;
175+ err = new SubprocessError ( 'Command not found.' ) ;
167176 err . code = ERROR_COMMAND_NOT_FOUND ;
168177 } else {
169- err = new SubprocessError ( 'Command error.' , { cause : error } ) ;
178+ err = new SubprocessError ( 'Command error.' ) ;
170179 }
171180
181+ err . error = error ;
172182 reject ( err ) ;
173183 } ) ;
174184
Original file line number Diff line number Diff line change 1212 "target" : " ES2021" ,
1313 "types" : [],
1414 "lib" : [
15- " ES2021" ,
16- " ES2022.Error"
15+ " ES2021"
1716 ]
1817 }
1918}
You can’t perform that action at this time.
0 commit comments