diff --git a/lib/manager/npm/post-update/index.ts b/lib/manager/npm/post-update/index.ts
index 4a827520894f5e5b5cad5b7c42a8434614d46a84..4b0a360607d15830d2610e3fe796fc87506af28a 100644
--- a/lib/manager/npm/post-update/index.ts
+++ b/lib/manager/npm/post-update/index.ts
@@ -166,53 +166,61 @@ export async function writeExistingFiles(
         await remove(npmLockPath);
       } else {
         logger.debug(`Writing ${npmLock}`);
-        let existingNpmLock = await getFile(npmLock);
-        const npmLockParsed = JSON.parse(existingNpmLock);
-        const packageNames = Object.keys(npmLockParsed?.packages || {}); // lockfileVersion=2
-        const widens = [];
-        let lockFileChanged = false;
-        for (const upgrade of config.upgrades) {
-          if (
-            upgrade.rangeStrategy === 'widen' &&
-            upgrade.npmLock === npmLock
-          ) {
-            widens.push(upgrade.depName);
-          }
-          const { depName } = upgrade;
-          for (const packageName of packageNames) {
+        let existingNpmLock: string;
+        let npmLockParsed: any;
+        try {
+          existingNpmLock = await getFile(npmLock);
+          npmLockParsed = JSON.parse(existingNpmLock);
+        } catch (err) {
+          logger.warn({ err }, 'Error parsing npm lock file');
+        }
+        if (npmLockParsed) {
+          const packageNames = Object.keys(npmLockParsed?.packages || {}); // lockfileVersion=2
+          const widens = [];
+          let lockFileChanged = false;
+          for (const upgrade of config.upgrades) {
             if (
-              packageName === `node_modules/${depName}` ||
-              packageName.startsWith(`node_modules/${depName}/`)
+              upgrade.rangeStrategy === 'widen' &&
+              upgrade.npmLock === npmLock
             ) {
-              logger.trace({ packageName }, 'Massaging out package name');
-              lockFileChanged = true;
-              delete npmLockParsed.packages[packageName];
+              widens.push(upgrade.depName);
             }
-          }
-        }
-        if (widens.length) {
-          logger.debug(
-            `Removing ${String(widens)} from ${npmLock} to force an update`
-          );
-          lockFileChanged = true;
-          try {
-            if (npmLockParsed.dependencies) {
-              widens.forEach((depName) => {
-                delete npmLockParsed.dependencies[depName];
-              });
+            const { depName } = upgrade;
+            for (const packageName of packageNames) {
+              if (
+                packageName === `node_modules/${depName}` ||
+                packageName.startsWith(`node_modules/${depName}/`)
+              ) {
+                logger.trace({ packageName }, 'Massaging out package name');
+                lockFileChanged = true;
+                delete npmLockParsed.packages[packageName];
+              }
             }
-          } catch (err) {
-            logger.warn(
-              { npmLock },
-              'Error massaging package-lock.json for widen'
+          }
+          if (widens.length) {
+            logger.debug(
+              `Removing ${String(widens)} from ${npmLock} to force an update`
             );
+            lockFileChanged = true;
+            try {
+              if (npmLockParsed.dependencies) {
+                widens.forEach((depName) => {
+                  delete npmLockParsed.dependencies[depName];
+                });
+              }
+            } catch (err) {
+              logger.warn(
+                { npmLock },
+                'Error massaging package-lock.json for widen'
+              );
+            }
           }
+          if (lockFileChanged) {
+            logger.debug('Massaging npm lock file before writing to disk');
+            existingNpmLock = JSON.stringify(npmLockParsed, null, 2);
+          }
+          await outputFile(npmLockPath, existingNpmLock);
         }
-        if (lockFileChanged) {
-          logger.debug('Massaging npm lock file before writing to disk');
-          existingNpmLock = JSON.stringify(npmLockParsed, null, 2);
-        }
-        await outputFile(npmLockPath, existingNpmLock);
       }
     }
     const { yarnLock } = packageFile;