Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

backport: force module format for virtual client-proxy (#74162) #74590

Merged
merged 1 commit into from
Jan 7, 2025

Conversation

lubieowoce
Copy link
Member

Fixes #74062 (jotai ran into this error when they added "type": "commonjs" to their
package.json
)

this is a bug in the transform we do when a 'use client' directive
is encountered. I think what's happening is that we're creating a virtual file that uses ESM import/export syntax, but it's called proxy.js (not proxy.mjs), so the "type": "commonjs" makes turbopack "correctly" upset at the ESM syntax.
#74062 (comment)

The (slightly kludgy) solution is to use proxy.mjs or proxy.cjs to force the module format, bypassing the issue where proxy.js changes meaning depending on package.json#type.

@ijjk
Copy link
Member

ijjk commented Jan 7, 2025

Stats from current PR

Default Build
General
vercel/next.js 14-2-1 vercel/next.js lubieowoce/backport-fix-client-transform-mjs Change
buildDuration 17.8s 16s N/A
buildDurationCached 10.2s 8s N/A
nodeModulesSize 201 MB 201 MB
nextStartRea..uration (ms) 433ms 433ms
Client Bundles (main, webpack)
vercel/next.js 14-2-1 vercel/next.js lubieowoce/backport-fix-client-transform-mjs Change
1a9f679d-HASH.js gzip 53.7 kB 53.7 kB
5428.HASH.js gzip 181 B 180 B N/A
6067-HASH.js gzip 5.14 kB 5.14 kB
6428-HASH.js gzip 31.6 kB 31.6 kB N/A
framework-HASH.js gzip 44.9 kB 44.9 kB
main-app-HASH.js gzip 242 B 243 B N/A
main-HASH.js gzip 32.3 kB 32.3 kB N/A
webpack-HASH.js gzip 1.68 kB 1.68 kB N/A
Overall change 104 kB 104 kB
Legacy Client Bundles (polyfills)
vercel/next.js 14-2-1 vercel/next.js lubieowoce/backport-fix-client-transform-mjs Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js 14-2-1 vercel/next.js lubieowoce/backport-fix-client-transform-mjs Change
_app-HASH.js gzip 196 B 196 B
_error-HASH.js gzip 184 B 185 B N/A
amp-HASH.js gzip 502 B 504 B N/A
css-HASH.js gzip 321 B 324 B N/A
dynamic-HASH.js gzip 1.82 kB 1.82 kB N/A
edge-ssr-HASH.js gzip 258 B 257 B N/A
head-HASH.js gzip 352 B 352 B
hooks-HASH.js gzip 371 B 372 B N/A
image-HASH.js gzip 4.32 kB 4.32 kB N/A
index-HASH.js gzip 259 B 257 B N/A
link-HASH.js gzip 2.67 kB 2.68 kB N/A
routerDirect..HASH.js gzip 316 B 314 B N/A
script-HASH.js gzip 385 B 386 B N/A
withRouter-HASH.js gzip 311 B 310 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 654 B 654 B
Client Build Manifests
vercel/next.js 14-2-1 vercel/next.js lubieowoce/backport-fix-client-transform-mjs Change
_buildManifest.js gzip 484 B 481 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js 14-2-1 vercel/next.js lubieowoce/backport-fix-client-transform-mjs Change
index.html gzip 529 B 528 B N/A
link.html gzip 542 B 540 B N/A
withRouter.html gzip 525 B 524 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size
vercel/next.js 14-2-1 vercel/next.js lubieowoce/backport-fix-client-transform-mjs Change
edge-ssr.js gzip 95.6 kB 95.6 kB N/A
page.js gzip 3.06 kB 3.06 kB
Overall change 3.06 kB 3.06 kB
Middleware size
vercel/next.js 14-2-1 vercel/next.js lubieowoce/backport-fix-client-transform-mjs Change
middleware-b..fest.js gzip 659 B 656 B N/A
middleware-r..fest.js gzip 156 B 154 B N/A
middleware.js gzip 25.5 kB 25.5 kB N/A
edge-runtime..pack.js gzip 839 B 839 B
Overall change 839 B 839 B
Next Runtimes
vercel/next.js 14-2-1 vercel/next.js lubieowoce/backport-fix-client-transform-mjs Change
app-page-exp...dev.js gzip 172 kB 172 kB
app-page-exp..prod.js gzip 98.4 kB 98.4 kB
app-page-tur..prod.js gzip 100 kB 100 kB
app-page-tur..prod.js gzip 94.4 kB 94.4 kB
app-page.run...dev.js gzip 146 kB 146 kB
app-page.run..prod.js gzip 92.9 kB 92.9 kB
app-route-ex...dev.js gzip 22.6 kB 22.6 kB
app-route-ex..prod.js gzip 16 kB 16 kB
app-route-tu..prod.js gzip 16 kB 16 kB
app-route-tu..prod.js gzip 15.7 kB 15.7 kB
app-route.ru...dev.js gzip 22.2 kB 22.2 kB
app-route.ru..prod.js gzip 15.7 kB 15.7 kB
pages-api-tu..prod.js gzip 9.58 kB 9.58 kB
pages-api.ru...dev.js gzip 9.85 kB 9.85 kB
pages-api.ru..prod.js gzip 9.57 kB 9.57 kB
pages-turbo...prod.js gzip 22.5 kB 22.5 kB
pages.runtim...dev.js gzip 23.2 kB 23.2 kB
pages.runtim..prod.js gzip 22.5 kB 22.5 kB
server.runti..prod.js gzip 51.8 kB 51.8 kB
Overall change 961 kB 961 kB
build cache
vercel/next.js 14-2-1 vercel/next.js lubieowoce/backport-fix-client-transform-mjs Change
0.pack gzip 1.63 MB 1.63 MB N/A
index.pack gzip 114 kB 114 kB N/A
Overall change 0 B 0 B
Diff details
Diff for middleware.js

Diff too large to display

Diff for edge-ssr.js

Diff too large to display

Commit: 0aa8020

@eps1lon
Copy link
Member

eps1lon commented Jan 7, 2025

rust check ain't happy

Fixes #74062 (`jotai` ran into this error [when they added `"type":
"commonjs"` to their
package.json](pmndrs/jotai#2579 (reply in thread)))

> this is a bug in the transform we do when a `'use client'` directive
is encountered. I think what's happening is that we're creating a
virtual file that uses ESM import/export syntax, but it's called
proxy.js (not proxy.mjs), so the `"type": "commonjs" `makes turbopack
"correctly" upset at the ESM syntax.
#74062 (comment)

The (slightly kludgy) solution is to use `proxy.mjs` or `proxy.cjs` to
force the module format, bypassing the issue where `proxy.js` changes
meaning depending on `package.json#type`.
@lubieowoce lubieowoce force-pushed the lubieowoce/backport-fix-client-transform-mjs branch from b80fdd2 to 0aa8020 Compare January 7, 2025 15:39
@ijjk
Copy link
Member

ijjk commented Jan 7, 2025

Tests Passed

@lubieowoce lubieowoce merged commit c4bf4ac into 14-2-1 Jan 7, 2025
51 of 56 checks passed
@lubieowoce lubieowoce deleted the lubieowoce/backport-fix-client-transform-mjs branch January 7, 2025 18:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants