You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[dynamicIO] fix: do not apply import tracking transform in edge (#79284)
Dynamic import tracking should never be applied to edge runtime code,
because:
1. `dynamicIO` prerendering is not supported for edge
2. the implementation of `dynamicIO` prerendering relies on
node-specific APIs.
I missed this in #74152. This PR fixes a couple things:
- We no longer apply the dynamic import tracking to any edge modules
- Just to be safe, `trackDynamicImport` and `new CacheSignal` will now
throw if it's called from the edge runtime
- However, if `track-module-loading` does end up in an edge module, we
don't want to error at the top-level when creating
`moduleLoadingSignal`, so it is now initialized lazily. This is a bit
ugly, but `AppRouteRouteModule` currently pulls all prerendering-related
code in at the top level (instead of e.g. a conditional `require()` when
prerendering), so it *is* included in edge route handlers, even if
unused.
- this also required changing `__next_require__`/`__next_chunk_load__`
to only track module loading in DIO prerenders, otherwise we'd attempt
to create `moduleLoadingSignal` in edge RSC too
I also fixed a potential unhandled rejection in `CacheSignal.trackRead`,
because `.finally` rejects even if the original error was caught
somewhere else. (thanks for finding this one @gnoff!)
0 commit comments