Skip to content

Commit f35b80e

Browse files
alan-agius4vikerman
authored andcommitted
fix(@angular/cli): use spawned process error when it's available
In some cases when an error occurs in the spawned process the `error` property will be populated instead of `stderr` or `stdout`. See: https://nodejs.org/api/child_process.html#child_process_child_process_spawnsync_command_args_options
1 parent 3558220 commit f35b80e

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

packages/angular/cli/tasks/install-package.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,18 +48,18 @@ export function installPackage(
4848
installArgs.push(packageManagerArgs.saveDev);
4949
}
5050

51-
const { status, stderr, stdout } = spawnSync(packageManager, [...installArgs, ...extraArgs], {
51+
const { status, stderr, stdout, error } = spawnSync(packageManager, [...installArgs, ...extraArgs], {
5252
stdio: 'pipe',
5353
encoding: 'utf8',
5454
cwd,
5555
});
5656

5757
if (status !== 0) {
58-
let error = (stderr || stdout).trim();
59-
if (error) {
60-
error += '\n';
58+
let errorMessage = ((error && error.message) || stderr || stdout || '').trim();
59+
if (errorMessage) {
60+
errorMessage += '\n';
6161
}
62-
throw new Error(error + `Package install failed${error ? ', see above' : ''}.`);
62+
throw new Error(errorMessage + `Package install failed${errorMessage ? ', see above' : ''}.`);
6363
}
6464

6565
logger.info(colors.green(`Installed packages for tooling via ${packageManager}.`));

0 commit comments

Comments
 (0)