Skip to content

Commit 0cc8121

Browse files
committed
fix(storybook): Make Storybook run also on Node v20.19.0 (#12003)
Adds the `--no-experimental-require-module` Node option when running Storybook to fix a regression introduced with Node 20.19.0 See nodejs/node#57555 and storybookjs/storybook#30867 for more context
1 parent d6a1bc5 commit 0cc8121

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

packages/cli-packages/storybook-vite/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,15 @@
2525
"@redwoodjs/telemetry": "7.7.4",
2626
"chalk": "4.1.2",
2727
"execa": "5.1.1",
28+
"semver": "7.6.3",
2829
"storybook": "7.6.17",
2930
"storybook-framework-redwoodjs-vite": "7.7.4",
3031
"terminal-link": "2.1.1",
3132
"yargs": "17.7.2"
3233
},
3334
"devDependencies": {
3435
"@redwoodjs/framework-tools": "7.7.4",
36+
"@types/semver": "^7",
3537
"@types/yargs": "17.0.32",
3638
"tsx": "4.15.2",
3739
"typescript": "5.4.5"

packages/cli-packages/storybook-vite/src/commands/storybookHandler.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import fs from 'node:fs'
22
import path from 'node:path'
3+
import process from 'node:process'
34

45
import type { ExecaError } from 'execa'
56
import execa from 'execa'
7+
import semver from 'semver'
68

79
import { getPaths } from '@redwoodjs/project-config'
810
import { errorTelemetry } from '@redwoodjs/telemetry'
@@ -141,8 +143,18 @@ export async function handler({
141143
.join(' ')}`
142144
}
143145

146+
const env: Record<string, string> = {}
147+
148+
if (
149+
semver.parse(process.version) !== null &&
150+
semver.lt(process.version, '22.0.0') &&
151+
semver.gte(process.version, '20.19.0')
152+
) {
153+
env.NODE_OPTIONS = '--no-experimental-require-module'
154+
}
155+
144156
try {
145-
await execa.command(command, execaOptions)
157+
await execa.command(command, { ...execaOptions, env })
146158
} catch (e) {
147159
if ((e as ExecaError).signal !== 'SIGINT') {
148160
console.log(c.error((e as Error).message))

yarn.lock

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8042,9 +8042,11 @@ __metadata:
80428042
"@redwoodjs/framework-tools": "npm:7.7.4"
80438043
"@redwoodjs/project-config": "npm:7.7.4"
80448044
"@redwoodjs/telemetry": "npm:7.7.4"
8045+
"@types/semver": "npm:^7"
80458046
"@types/yargs": "npm:17.0.32"
80468047
chalk: "npm:4.1.2"
80478048
execa: "npm:5.1.1"
8049+
semver: "npm:7.6.3"
80488050
storybook: "npm:7.6.17"
80498051
storybook-framework-redwoodjs-vite: "npm:7.7.4"
80508052
terminal-link: "npm:2.1.1"
@@ -11426,6 +11428,13 @@ __metadata:
1142611428
languageName: node
1142711429
linkType: hard
1142811430

11431+
"@types/semver@npm:^7":
11432+
version: 7.7.0
11433+
resolution: "@types/semver@npm:7.7.0"
11434+
checksum: 10c0/6b5f65f647474338abbd6ee91a6bbab434662ddb8fe39464edcbcfc96484d388baad9eb506dff217b6fc1727a88894930eb1f308617161ac0f376fe06be4e1ee
11435+
languageName: node
11436+
linkType: hard
11437+
1142911438
"@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.4":
1143011439
version: 7.5.8
1143111440
resolution: "@types/semver@npm:7.5.8"
@@ -30067,6 +30076,15 @@ __metadata:
3006730076
languageName: node
3006830077
linkType: hard
3006930078

30079+
"semver@npm:7.6.3":
30080+
version: 7.6.3
30081+
resolution: "semver@npm:7.6.3"
30082+
bin:
30083+
semver: bin/semver.js
30084+
checksum: 10c0/88f33e148b210c153873cb08cfe1e281d518aaa9a666d4d148add6560db5cd3c582f3a08ccb91f38d5f379ead256da9931234ed122057f40bb5766e65e58adaf
30085+
languageName: node
30086+
linkType: hard
30087+
3007030088
"semver@npm:^6.0.0, semver@npm:^6.2.0, semver@npm:^6.3.0, semver@npm:^6.3.1":
3007130089
version: 6.3.1
3007230090
resolution: "semver@npm:6.3.1"

0 commit comments

Comments
 (0)