From bb0ec76f249cfac71be148a916e290f209af7a14 Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Fri, 15 May 2026 12:10:36 -0300 Subject: [PATCH] fix(machineToken): use require() for node-machine-id to survive webpack bundling The default import + destructuring pattern was being mangled by webpack's static analysis during Next.js standalone builds, causing 'Cannot destructure property machineIdSync of undefined' errors in production. Using require() bypasses webpack's interop wrapper (c.n(...)) and loads the module's exports directly at runtime. --- src/lib/machineToken.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/lib/machineToken.ts b/src/lib/machineToken.ts index af91785bed..ced4eb2d8c 100644 --- a/src/lib/machineToken.ts +++ b/src/lib/machineToken.ts @@ -1,7 +1,13 @@ import { createHmac } from "node:crypto"; -import nodeMachineId from "node-machine-id"; - -const { machineIdSync } = nodeMachineId; +// eslint-disable-next-line @typescript-eslint/no-require-imports +let machineIdSync: (original?: boolean) => string; +try { + // Use require() to bypass webpack static analysis that breaks the default export + const mod = require("node-machine-id"); + machineIdSync = mod.machineIdSync || mod.default?.machineIdSync; +} catch { + machineIdSync = () => ""; +} const BUILTIN_DEFAULT_SALT = "omniroute-cli-auth-v1";