From c6da6693f768d571c8c94cc6b441f7a694ba1d0f Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Sat, 18 Jan 2025 21:39:56 +0000 Subject: [PATCH 1/3] Add --experimental-global-webcrypto node option fix "crypto is not defined error" on Node.js 18 in dev --- .changeset/green-cheetahs-scream.md | 5 +++++ packages/core/src/v3/build/runtime.ts | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .changeset/green-cheetahs-scream.md diff --git a/.changeset/green-cheetahs-scream.md b/.changeset/green-cheetahs-scream.md new file mode 100644 index 0000000000..1836f4a44a --- /dev/null +++ b/.changeset/green-cheetahs-scream.md @@ -0,0 +1,5 @@ +--- +"@trigger.dev/core": patch +--- + +Add --experimental-global-webcrypto node option fix "crypto is not defined error" on Node.js 18 in dev diff --git a/packages/core/src/v3/build/runtime.ts b/packages/core/src/v3/build/runtime.ts index d473f0f7f8..3ad5d78203 100644 --- a/packages/core/src/v3/build/runtime.ts +++ b/packages/core/src/v3/build/runtime.ts @@ -48,7 +48,12 @@ export function execOptionsForRuntime(runtime: BuildRuntime, options: ExecOption const conditions = options.customConditions?.map((condition) => `--conditions=${condition}`); - return [importEntryPoint, conditions, process.env.NODE_OPTIONS] + return [ + importEntryPoint, + conditions, + process.env.NODE_OPTIONS, + "--experimental-global-webcrypto", + ] .filter(Boolean) .flat() .join(" "); From ab2a58c5ffd62a1f983acb7d6552262a8480bee2 Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Sat, 18 Jan 2025 21:52:52 +0000 Subject: [PATCH 2/3] Only add flag when on node 18 --- packages/core/src/v3/build/runtime.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/v3/build/runtime.ts b/packages/core/src/v3/build/runtime.ts index 3ad5d78203..8fa1580b2a 100644 --- a/packages/core/src/v3/build/runtime.ts +++ b/packages/core/src/v3/build/runtime.ts @@ -52,7 +52,7 @@ export function execOptionsForRuntime(runtime: BuildRuntime, options: ExecOption importEntryPoint, conditions, process.env.NODE_OPTIONS, - "--experimental-global-webcrypto", + nodeRuntimeNeedsGlobalWebCryptoFlag() ? "--experimental-global-webcrypto" : undefined, ] .filter(Boolean) .flat() From e21c112cdad2fd11af72b4c488ff9bfc62f002d9 Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Mon, 20 Jan 2025 10:09:21 +0000 Subject: [PATCH 3/3] Missed the function --- packages/core/src/v3/build/runtime.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/core/src/v3/build/runtime.ts b/packages/core/src/v3/build/runtime.ts index 8fa1580b2a..5b667f6e12 100644 --- a/packages/core/src/v3/build/runtime.ts +++ b/packages/core/src/v3/build/runtime.ts @@ -63,3 +63,12 @@ export function execOptionsForRuntime(runtime: BuildRuntime, options: ExecOption } } } + +// Detect if we are using node v18, since we don't support lower than 18, and we only need to enable the flag for v18 +function nodeRuntimeNeedsGlobalWebCryptoFlag(): boolean { + try { + return process.versions.node.startsWith("18."); + } catch { + return false; + } +}