module-federation / vite

Vite Plugin for Module Federation
MIT License
289 stars 18 forks source link

vite with SSR: require is not defined #156

Open omridevk opened 1 day ago

omridevk commented 1 day ago

when using SSR, I am getting the following error:

11:02:24 AM [vite] Error when evaluating SSR module /node_modules/__mf__virtual/host_mf_2_page_mf_2_app__loadRemote__remote_mf_1_remote_mf_2_app__loadRemote__.js:
|- ReferenceError: require is not defined

see stackblitz for reproduction: https://stackblitz.com/edit/github-ad1c93-e4uuvj?file=vite.config.ts,src/main.jsx,test.js

vite config:

import { defineConfig } from 'vite';
import { federation } from '@module-federation/vite';

export default defineConfig({
  ssr: {
    optimizeDeps: {
      include: ['__mf__virtual', '@module-federation/runtime'],
    },
  },
  plugins: [
    federation({
      name: 'host-page-app',
      remotes: {
        remote: {
          type: 'module',
          name: 'remote',
          entry: 'http://test/remoteEntry.js',
          entryGlobalName: 'remote',
          shareScope: 'default',
        },
      },
      filename: 'remoteEntry.js',
    }),
  ],
});
omridevk commented 1 day ago

run npm run test to see the error

gioboa commented 1 day ago

Thanks @omridevk for your feedback. We still need to focus into the SSR story, would you like to tackle the problem?

omridevk commented 1 day ago

sure, it was quite easy to resolve this by using

import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);

and using default export instead of the CJS module.exports

gioboa commented 1 day ago

@omridevk awesome :clap: I'm looking forward to testing your PR :rocket: