Files
next.js/test/e2e/app-dir/next-config-ts-native-mts/import-from-node-modules/next-config-ts-import-from-node-modules-esm.test.ts
3275034bc6 Allow next.config.mts for Node.js native TS resolver (#83556)
Following up on https://github.com/vercel/next.js/pull/83240

When using ESM syntax in `next.config.ts` on a CJS project, Node.js
first assumes it as CJS, then parses it into ESM again, giving a
warning:

```
(node:27529) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file://.../next.config.ts is not specified and it doesn't parse as CommonJS.
Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
To eliminate this warning, add "type": "module" to .../package.json.
```

Therefore, give users the option to use `next.config.mts` which Node.js
expects ESM syntax.

The tests are a copy of `next-config-ts-native-ts` and only renamed the
config to mts.

---------

Co-authored-by: Sebastian "Sebbie" Silbermann <[email protected]>
2025-09-16 12:25:49 +02:00

26 lines
725 B
TypeScript

import { nextTestSetup } from 'e2e-utils'
describe('next-config-ts-import-from-node-modules-esm', () => {
// TODO: Remove this once we bump minimum Node.js version to v22
if (!(process.features as any).typescript) {
it.skip('requires `process.features.typescript` to feature detect Node.js native TS', () => {})
return
}
const { next } = nextTestSetup({
files: __dirname,
packageJson: {
type: 'module',
},
})
it('should import from node_modules (ESM)', async () => {
const $ = await next.render$('/')
const text = $('p').text()
expect(text).toContain('cjs')
expect(text).toContain('mjs')
expect(text).toContain('jsCJS')
expect(text).toContain('jsESM')
})
})