TanStackT
TanStack14mo ago
9 replies
military-pink

How to ensure module is imported everywhere (server, client, server functions)

I need to ensure that importExtensions is executed in all contexts.
So far I only managed to make it work by importing it in client.tsx, ssr.tsx, and router.tsx,
and in router.tsx I also had to make sure to execute it via a global middleware. Is there a simpler approach?

router.tsx:
import { importExtensions } from '#app/shared/extensions/imports';
import { createMiddleware, registerGlobalMiddleware } from '@tanstack/start';

const defaultMiddleware = createMiddleware()
  .client(({ next, context }) =>
  {
    importExtensions(false);
    return next(context);
  })
  .server(({ next, context }) =>
  {
    importExtensions(false);
    return next(context);
  });

importExtensions();
registerGlobalMiddleware({ middleware: [defaultMiddleware] });


importExtensions:
import '#app/shared/extensions/string-extensions';
import '#app/shared/extensions/zod-extensions';

export const importExtensions = (log = true) =>
{
  if (log)
  {
    console.log('Imported shared extensions.');
  }
};
Was this page helpful?