Skip to content

Set babel config to use commonjs modules on server#61

Open
penx wants to merge 2 commits intoreactjs:mainfrom
penx:babel-config
Open

Set babel config to use commonjs modules on server#61
penx wants to merge 2 commits intoreactjs:mainfrom
penx:babel-config

Conversation

@penx
Copy link

@penx penx commented Nov 3, 2022

Fixes #60

Previously, if you had

export default function App({
  selectedId,
  isEditing,
  searchText,
  something = ['a', 'b'],
}) {
  const [a, b] = something;
  console.log(a, b);

this would error with

internal/modules/cjs/loader.js:1102
      throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath);
      ^

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /rsc/server-components-demo/node_modules/@babel/runtime/helpers/esm/slicedToArray.js
require() of ES modules is not supported.

This updates the babel config on the server to use useESModules: false

Previously, if you had

```js
export default function App({
  selectedId,
  isEditing,
  searchText,
  something = ['a', 'b'],
}) {
  const [a, b] = something;
  console.log(a, b);
```

this would error with

```console
internal/modules/cjs/loader.js:1102
      throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath);
      ^

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /rsc/server-components-demo/node_modules/@babel/runtime/helpers/esm/slicedToArray.js
require() of ES modules is not supported.
```

This updates the babel config on the server to use `useESModules: false`
The package lock in the repository is v2. Using fermium (14) sets it back to v1.

Instead, update the version of node in .nvmrc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Can't use destructuring assignment in server code

1 participant