Skip to content

fix(deps): skip building the unused isolated-vm native addon + take n8n-workflow 1.120.22#143

Merged
ribato22 merged 1 commit into
mainfrom
fix/skip-isolated-vm-build
Jul 27, 2026
Merged

fix(deps): skip building the unused isolated-vm native addon + take n8n-workflow 1.120.22#143
ribato22 merged 1 commit into
mainfrom
fix/skip-isolated-vm-build

Conversation

@ribato22

Copy link
Copy Markdown
Owner

The failure

Dependabot #141 (n8n-workflow 1.120.7 → 1.120.22) failed three checks at once — Lint, Typecheck & Build, Public boundary, Dependency audit — with Docker Build and Tests skipped. That pattern is always "the install step died", and the log confirms it:

../src/isolate/holder.h:55:22: error: 'void ivm::IsolateTaskRunner::PostTaskImpl(
std::unique_ptr<v8::Task>, const int&)' marked 'final', but is not virtual
gyp ERR! build error / make failed with exit code: 2
   → node_modules/.pnpm/isolated-vm@6.1.2

Not the SSH-lockfile regression (that guard passed: "OK: no SSH git URLs"). n8n-workflow 1.120.22 introduces a new transitive dependency isolated-vm@6.1.2 — n8n's user-code sandbox — whose native addon doesn't compile against Node 20's V8 headers. main (on 1.120.7) has no isolated-vm at all, so this is a fresh regression, not pre-existing.

The fix

We never execute that sandbox. n8n-workflow is only a devDependency + peerDependency of packages/n8n-nodes-multiwa, used for TypeScript types when building the node; n8n supplies isolated-vm itself at runtime inside the user's own n8n instance.

So instead of pinning n8n-workflow back or ignoring its patch stream (which carries real fixes), add:

"pnpm": {
  "neverBuiltDependencies": ["isolated-vm"]
}

…and take the 1.120.22 bump in the same PR.

Proven locally, not assumed

With the setting in place, pnpm --filter n8n-nodes-multiwa add -D n8n-workflow@1.120.22:

  • does pull isolated-vm@6.1.2 into the lockfile (same dep that broke CI)
  • completes cleanly with no node-gyp step
  • is surgical — the only lockfile change is n8n-workflow's own specifier/version (1.120.7 → 1.120.22); no other dependency moved

Verification

  • All 6 workspace packages build ✓ (incl. n8n-nodes-multiwa)
  • api / worker / admin typecheck ✓
  • api 324/324 · worker 34/34
  • Lockfile still air-gap safe (0 ssh:// refs)

Supersedes #141.

…8n-workflow 1.120.22

n8n-workflow 1.120.22 introduces a new transitive dependency, isolated-vm@6.1.2
(n8n's user-code sandbox), whose native addon does not compile against Node 20's
V8 headers on the CI runner:

  ../src/isolate/holder.h:55:22: error: 'void ivm::IsolateTaskRunner::PostTaskImpl(
  std::unique_ptr<v8::Task>, const int&)' marked 'final', but is not virtual
  gyp ERR! build error / make failed with exit code: 2

That killed the install step, taking down Lint/Typecheck/Build, Public boundary,
and Dependency audit together (Dependabot PR #141).

We never execute that sandbox: n8n-workflow is only a devDependency + peerDependency
of packages/n8n-nodes-multiwa, used for TypeScript types when building the node —
n8n itself supplies isolated-vm at runtime inside the user's own n8n instance. So
add pnpm.neverBuiltDependencies: ["isolated-vm"] to skip its build script rather
than pin n8n-workflow back or ignore its patch updates (which carry fixes).

Proven locally: with the setting, installing n8n-workflow 1.120.22 pulls
isolated-vm@6.1.2 and completes with no node-gyp step. The bump is surgical —
only n8n-workflow's specifier/version changed in the lockfile.

All 6 workspace packages build; api/worker/admin typecheck; api 324/324 and
worker 34/34 tests green; lockfile still air-gap safe (0 ssh refs).
@ribato22
ribato22 merged commit 828f584 into main Jul 27, 2026
8 checks passed
@ribato22
ribato22 deleted the fix/skip-isolated-vm-build branch July 27, 2026 09:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant