Импорт динамических героиконов с Next.js

#reactjs #typescript #next.js

Вопрос:

Я использую героиконы в своих Next.js проект и поскольку в настоящее время он не поддерживает динамический импорт (путем передачи имени значка компоненту) Я создал свой собственный компонент.

 // HeroIcon.tsx
import * as SolidIcons from '@heroicons/react/solid';
import * as OutlineIcons from '@heroicons/react/outline';

interface Props {
  icon: string;
  color?: string;
  size?: number;
  outline?: boolean;
}

export const HeroIcon = (props: Props): JSX.Element => {
  const { icon, color, size, outline = false } = props;

  const { ...icons } = outline ? OutlineIcons : SolidIcons;

  // @ts-ignore
  const Icon: JSX.Element = icons[icon];

  const classes = [
    `${color ? color : 'text-black'}`,
    `h-${size ? size : 6}`,
    `w-${size ? size : 6}`
  ];

  return (
    // @ts-ignore
    <Icon className={classes.join(' ')} />
  );
};
 

и я могу позже использовать его как таковой:

 <HeroIcon icon='CogIcon' color='text-blue-600' size={6} outline />
 

Пока он работает на моем сервере разработки:
введите описание изображения здесь

в тот момент, когда я создаю проект npm run build и начинаю его, npm start я вместо этого получаю этот результат: введите описание изображения здесь

а на мобильных устройствах значки вообще не видны.

Страница предварительно отрисована с помощью SSG и использует оба getStaticPaths и getStaticProps .

Есть идеи, в чем может быть причина?