From c4645d1f62d9e561a8d2850b9d86f6eb91352641 Mon Sep 17 00:00:00 2001 From: Todor Totev Date: Tue, 10 Nov 2015 18:07:14 +0200 Subject: [PATCH] Skip sha verification when a package is not on npmjs.org Fixes https://github.com/NativeScript/nativescript-cli/issues/1147 --- lib/npm-installation-manager.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/npm-installation-manager.ts b/lib/npm-installation-manager.ts index 11a1cdd2e4..677b4cc258 100644 --- a/lib/npm-installation-manager.ts +++ b/lib/npm-installation-manager.ts @@ -137,13 +137,21 @@ export class NpmInstallationManager implements INpmInstallationManager { return ((): boolean => { let shasumProperty = "dist.shasum"; let cachedPackagePath = this.getCachedPackagePath(packageName, version); - let realShasum = this.$npm.view(`${packageName}@${version}`, shasumProperty).wait()[version][shasumProperty]; + let packageInfo = this.$npm.view(`${packageName}@${version}`, shasumProperty).wait(); + + if (_.isEmpty(packageInfo)) { + // this package has not been published to npmjs.org yet - perhaps manually added via --framework-path + this.$logger.trace(`Checking shasum of package ${packageName}@${version}: skipped because the package was not found in npmjs.org`); + return true; + } + + let realShasum = packageInfo[version][shasumProperty]; let packageTgz = cachedPackagePath + ".tgz"; let currentShasum = ""; if(this.$fs.exists(packageTgz).wait()) { currentShasum = this.$fs.getFileShasum(packageTgz).wait(); } - this.$logger.trace(`Checking shasum of package: ${packageName}@${version}: expected ${realShasum}, actual ${currentShasum}.`); + this.$logger.trace(`Checking shasum of package ${packageName}@${version}: expected ${realShasum}, actual ${currentShasum}.`); return realShasum === currentShasum; }).future()(); }