From 54e6924f742dfc46f1413c3cbdfeb1440c1ad8d9 Mon Sep 17 00:00:00 2001 From: Filipe Silva Date: Tue, 2 Apr 2019 16:45:10 +0100 Subject: [PATCH] fix(@schematics/update): guard against null value for semver check --- packages/schematics/update/BUILD | 1 + packages/schematics/update/update/index.ts | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/schematics/update/BUILD b/packages/schematics/update/BUILD index 32deb0ba84..146f202f90 100644 --- a/packages/schematics/update/BUILD +++ b/packages/schematics/update/BUILD @@ -28,6 +28,7 @@ ts_library( "//packages/angular_devkit/schematics", "//packages/angular_devkit/schematics:tasks", "@npm//rxjs", + "@npm//semver", "@npm//@types/node", "@npm//@types/semver", diff --git a/packages/schematics/update/update/index.ts b/packages/schematics/update/update/index.ts index 48bc641fcf..7ac57a6e7f 100644 --- a/packages/schematics/update/update/index.ts +++ b/packages/schematics/update/update/index.ts @@ -528,7 +528,7 @@ function _buildPackageInfo( // Find out the currently installed version. Either from the package.json or the node_modules/ // TODO: figure out a way to read package-lock.json and/or yarn.lock. - let installedVersion: string | undefined; + let installedVersion: string | undefined | null; const packageContent = tree.read(`/node_modules/${name}/package.json`); if (packageContent) { const content = JSON.parse(packageContent.toString()) as JsonSchemaForNpmPackageJsonFiles; @@ -542,6 +542,12 @@ function _buildPackageInfo( ); } + if (!installedVersion) { + throw new SchematicsException( + `An unexpected error happened; could not determine version for package ${name}.`, + ); + } + const installedPackageJson = npmPackageJson.versions[installedVersion] || packageContent; if (!installedPackageJson) { throw new SchematicsException(