rsnext/packages/next/build
Jiachi Liu 2af6b63dd1
Should resolve esm external module imports on server (#40865)
### Issue

When import an esm package in client component, and use it in server
component page, it will fail to SSR but render successfully on client.
It's because the import to esm package will make the client chunk become
an **async module** since esm module will be treated as **async**.

```
page (serve component) -> local module (client) -> external dependency (esm)
```

Then in react SSR layer, it need the module type information of that
chunk, async or not for react so that react could unwrap the async
module from `Promise` properly when SSR.

### Solution

We need to mark the client entries which are effected by async/esm
modules that becoming **async** as `async: true` in SSR manifest.

Since flight manifest plugin is only running against client compiler,
which doesn't have those module information from server compiler. So we
collect the async modules from the **server** compiler **client** layer
from flight entry client plugin, then leverage the collection to detect
if a module is async in flight manifest plugin for react.

## Bug

- [ ] Related issues linked using `fixes #number`
- [x] Integration tests added
- [ ] Errors have a helpful link attached, see `contributing.md`
2022-09-26 15:46:01 -07:00
..
analysis Client directive (#40415) 2022-09-18 00:00:16 +00:00
babel Remove webpack4 types (#39631) 2022-08-16 09:55:37 +00:00
jest Set __NEXT_NEW_LINK_BEHAVIOR in Jest tests when newNextLinkBehavior is true (#40702) 2022-09-21 22:36:59 -07:00
output Remove webpack4 types (#39631) 2022-08-16 09:55:37 +00:00
polyfills Fix global process testing for the process polyfill (#33220) 2022-01-13 16:44:55 +00:00
swc Add local font loader (#40801) 2022-09-22 12:49:02 -07:00
webpack Should resolve esm external module imports on server (#40865) 2022-09-26 15:46:01 -07:00
compiler.ts Remove webpack4 types (#39631) 2022-08-16 09:55:37 +00:00
cssnano-simple.js Pre-compile more dependencies (#32627) 2021-12-20 14:01:35 +01:00
entries.ts Add support for font loaders (#40746) 2022-09-21 22:12:59 -07:00
generate-build-id.ts Fix generateBuildId type that can be async function (#28040) 2021-08-12 22:26:44 +00:00
index.ts Fix required server files for font loader manifest (#40784) 2022-09-22 09:10:36 -07:00
is-writeable.ts Use fs.promises instead of promisify (#12026) 2020-05-02 00:10:19 -04:00
load-jsconfig.ts Add handling for auto installing TypeScript deps and HMRing tsconfig (#39838) 2022-08-23 13:16:47 -05:00
spinner.ts [Feature] Progress bar for static build (#15297) 2020-08-04 09:58:23 +02:00
utils.ts Add handling for static generation in app (#40561) 2022-09-19 18:05:28 +00:00
webpack-config.ts Should resolve esm external module imports on server (#40865) 2022-09-26 15:46:01 -07:00
worker.ts Add handling for static generation in app (#40561) 2022-09-19 18:05:28 +00:00
write-build-id.ts Move code shared between server/client to "shared" folder (#26734) 2021-06-30 11:43:31 +02:00