Next.js-vite: Fix module resolution in preset with fileURLToPath #32386
Merged
Conversation
fileURLToPath for module resolution in preset
|
View your CI Pipeline Execution ↗ for commit 09a230f
☁️ Nx Cloud last updated this comment at |
fileURLToPath for module resolution in presetfileURLToPath for module resolution in preset
shilman
approved these changes
Sep 3, 2025
Member
shilman
left a comment
There was a problem hiding this comment.
Thanks @ndelangen . Tested and it fixes the problem. @JReinhold can you please do a technical review? I'm merging & releasing to unblock our announcement.
8 tasks
fileURLToPath for module resolution in presetfileURLToPath
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #32378
What I did
The reference to the previewAnnotation was not wrapped with
fileURLToPathwhich is needed for vite in some situationsChecklist for Contributors
Testing
The changes in this PR are covered in the following automated tests:
Manual testing
I have manually verified this fix solves the problem by copying over the
distinto a failing reproduction.Afterwards the sandbox worked.
Documentation
MIGRATION.MD
Checklist for Maintainers
When this PR is ready for testing, make sure to add
ci:normal,ci:mergedorci:dailyGH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found incode/lib/cli-storybook/src/sandbox-templates.tsMake sure this PR contains one of the labels below:
Available labels
bug: Internal changes that fixes incorrect behavior.maintenance: User-facing maintenance tasks.dependencies: Upgrading (sometimes downgrading) dependencies.build: Internal-facing build tooling & test updates. Will not show up in release changelog.cleanup: Minor cleanup style change. Will not show up in release changelog.documentation: Documentation only changes. Will not show up in release changelog.feature request: Introducing a new feature.BREAKING CHANGE: Changes that break compatibility in some way with current major version.other: Changes that don't fit in the above categories.🦋 Canary release
This pull request has been released as version
0.0.0-pr-32386-sha-09a230ff. Try it out in a new sandbox by runningnpx storybook@0.0.0-pr-32386-sha-09a230ff sandboxor in an existing project withnpx storybook@0.0.0-pr-32386-sha-09a230ff upgrade.More information
0.0.0-pr-32386-sha-09a230ffnorbert/esm-nextjs-vite-resolve-fix09a230ff1756908509)To request a new release of this pull request, mention the
@storybookjs/coreteam.core team members can create a new canary release here or locally with
gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=32386Greptile Summary
Updated On: 2025-09-03 13:02:04 UTC
This PR fixes a critical ESM module resolution bug in the Next.js Vite framework preset by wrapping three
import.meta.resolve()calls withfileURLToPath(). The issue was causing Storybook to fail on fresh installs with Next.js Vite, producing malformed file paths that mixed absolute filesystem paths withfile://URL protocols.The problem occurs because
import.meta.resolve()returns file URLs (starting withfile://), but Vite's module resolution system expects standard filesystem paths. Without proper conversion, the resulting paths were malformed, causing import resolution failures during development.The fix applies
fileURLToPath()to three key module references:This change aligns with Node.js ESM best practices and maintains consistency with other parts of the same file that were already correctly using
fileURLToPath()for styled-jsx module resolution. The fix is targeted and minimal, addressing only the specific paths that were causing the resolution failures while preserving all existing functionality.Confidence score: 5/5