diff --git a/src/compat.ts b/src/compat.ts index 83c4278382..90ae7aa0bf 100644 --- a/src/compat.ts +++ b/src/compat.ts @@ -1,6 +1,6 @@ import fetch from 'node-fetch' import { resolve } from 'upath' -import { readFile, writeFile } from 'fs-extra' +import { move, readFile, writeFile } from 'fs-extra' import { build, generate, prepare } from './build' import { getNitroContext, NitroContext } from './context' import { createDevServer } from './server/dev' @@ -78,7 +78,9 @@ export default function nuxt2CompatModule () { // Generate mjs resources nuxt.hook('build:compiled', async ({ name }) => { if (name === 'server') { - await writeFile(resolve(nuxt.options.buildDir, 'dist/server/server.mjs'), 'export { default } from "./server.js"', 'utf8') + const jsServerEntry = resolve(nuxt.options.buildDir, 'dist/server/server.js') + await move(jsServerEntry, jsServerEntry.replace(/.js$/, '.cjs')) + await writeFile(jsServerEntry.replace(/.js$/, '.mjs'), 'export { default } from "./server.cjs"', 'utf8') } else if (name === 'client') { const manifest = await readFile(resolve(nuxt.options.buildDir, 'dist/server/client.manifest.json'), 'utf8') await writeFile(resolve(nuxt.options.buildDir, 'dist/server/client.manifest.mjs'), 'export default ' + manifest, 'utf8') diff --git a/src/rollup/config.ts b/src/rollup/config.ts index 0a119cd368..8556430a3e 100644 --- a/src/rollup/config.ts +++ b/src/rollup/config.ts @@ -163,7 +163,10 @@ export const getRollupConfig = (nitroContext: NitroContext) => { inline: nitroContext.node === false || nitroContext.inlineDynamicImports, globbyOptions: { ignore: [ - 'server.js' + 'client.manifest.mjs', + 'server.cjs', + 'server.mjs', + 'server.manifest.mjs' ] } })) diff --git a/src/rollup/plugins/dynamic-require.ts b/src/rollup/plugins/dynamic-require.ts index 758907f2ba..7182ff4747 100644 --- a/src/rollup/plugins/dynamic-require.ts +++ b/src/rollup/plugins/dynamic-require.ts @@ -53,7 +53,7 @@ export function dynamicRequire ({ dir, globbyOptions, inline }: Options): Plugin } // Scan chunks - const files = await globby('**/*.js', { cwd: dir, absolute: false, ...globbyOptions }) + const files = await globby('**/*.{cjs,mjs,js}', { cwd: dir, absolute: false, ...globbyOptions }) const chunks = files.map(id => ({ id, src: resolve(dir, id).replace(/\\/g, '/'),