@@ -12,7 +12,9 @@ import { Arguments, Argv } from 'yargs';
12
12
import { checkConfigForCredentials } from '../checks/check-credentials' ;
13
13
import checkProjectStructure from '../checks/project-structure' ;
14
14
import { printConfigInfo , printDeployedResources } from '../printers/deploy' ;
15
+ import { errorMessage } from '../printers/utils' ;
15
16
import {
17
+ ApiErrorResponse ,
16
18
getFunctionServiceSid ,
17
19
HttpError ,
18
20
saveLatestDeploymentData ,
@@ -143,10 +145,11 @@ function handleError(
143
145
config : DeployLocalProjectConfig
144
146
) {
145
147
log ( '%O' , err ) ;
148
+ spinner . fail ( 'Failed Deployment' ) ;
146
149
if ( err . name === 'conflicting-servicename' ) {
147
- spinner . fail ( err . message ) ;
148
- console . log ( stripIndent `
150
+ const messageBody = stripIndent `
149
151
Here are a few ways to solve this problem:
152
+
150
153
- Rename your project in the package.json "name" property
151
154
- Pass an explicit name to your deployment
152
155
> ${ flags . $0 } deploy -n my-new-service-name
@@ -156,11 +159,20 @@ function handleError(
156
159
> ${ flags . $0 } deploy --override-existing-project
157
160
- Run deployment in force mode
158
161
> ${ flags . $0 } deploy --force
159
- ` ) ;
162
+ ` ;
163
+ console . error ( errorMessage ( err . message , messageBody ) ) ;
160
164
} else if ( err . name === 'HTTPError' ) {
161
- spinner . fail ( ( err as HttpError ) . body . message ) ;
165
+ const responseBody = JSON . parse (
166
+ ( err as HttpError ) . body
167
+ ) as ApiErrorResponse ;
168
+ const messageBody = stripIndent `
169
+ ${ responseBody . message }
170
+
171
+ More info: ${ responseBody . more_info }
172
+ ` ;
173
+ console . error ( errorMessage ( '' , messageBody ) ) ;
162
174
} else {
163
- spinner . fail ( err . message ) ;
175
+ console . error ( err . message ) ;
164
176
}
165
177
process . exit ( 1 ) ;
166
178
}
0 commit comments