diff --git a/lib/modules/manager/npm/post-update/npm.spec.ts b/lib/modules/manager/npm/post-update/npm.spec.ts
index 170ca700c57bde6b0a714cc7ccf8bba0d446d3eb..3637ecbd0812388cd1be11d794e6a7eb0cbd4986 100644
--- a/lib/modules/manager/npm/post-update/npm.spec.ts
+++ b/lib/modules/manager/npm/post-update/npm.spec.ts
@@ -459,6 +459,17 @@ describe('modules/manager/npm/post-update/npm', () => {
           workspacesPackages: ['docs/*', 'web/*'],
         },
       },
+      {
+        packageFile: 'some-missing-dir/docs/a/package.json',
+        packageName: 'hello',
+        depType: 'dependencies',
+        newVersion: '1.1.1',
+        newValue: '^1.0.0',
+        isLockfileUpdate: true,
+        managerData: {
+          workspacesPackages: ['docs/*', 'web/*'],
+        },
+      },
     ];
 
     it('workspace in sub-folder', async () => {
diff --git a/lib/modules/manager/npm/post-update/npm.ts b/lib/modules/manager/npm/post-update/npm.ts
index 3540350264e0988281e1ff406723840a20490bf9..4189c644798c2439523aa855de66037123faf19a 100644
--- a/lib/modules/manager/npm/post-update/npm.ts
+++ b/lib/modules/manager/npm/post-update/npm.ts
@@ -265,18 +265,28 @@ export function divideWorkspaceAndRootDeps(
         // stop when the first match is found and
         // add workspaceDir to workspaces set and upgrade object
         for (const workspacePattern of workspacePatterns) {
-          if (minimatch(workspacePattern).match(workspaceDir)) {
+          const massagedPattern = (workspacePattern as string).replace(
+            /^\.\//,
+            '',
+          );
+          if (minimatch(massagedPattern).match(workspaceDir)) {
             workspaceName = workspaceDir;
             break;
           }
         }
-        if (
-          workspaceName &&
-          !rootDeps.has(upgrade.managerData.packageKey) // prevent same dep from existing in root and workspace
-        ) {
-          workspaces.add(workspaceName);
-          upgrade.workspace = workspaceName;
-          lockWorkspacesUpdates.push(upgrade);
+        if (workspaceName) {
+          if (
+            !rootDeps.has(upgrade.managerData.packageKey) // prevent same dep from existing in root and workspace
+          ) {
+            workspaces.add(workspaceName);
+            upgrade.workspace = workspaceName;
+            lockWorkspacesUpdates.push(upgrade);
+          }
+        } else {
+          logger.warn(
+            { workspacePatterns, workspaceDir },
+            'workspaceDir not found',
+          );
         }
         continue;
       }