@luxurypluxury

Почему ошибка в next.js ReferenceError: require is not defined?

Сделал свою ui библиотеку. Подключаю ее к next.js приложению и выскакивает ошибка:
6403983c350f3564232694.png

Вот код бандлера библиотеки (rollup):
const typescript = require("@rollup/plugin-typescript");
const postcss = require("rollup-plugin-postcss");
const url = require("@rollup/plugin-url");
const svgr = require("@svgr/rollup");
const terser = require("@rollup/plugin-terser");
const dts = require("rollup-plugin-dts");

module.exports = [
    {
        input: 'src/index.ts',
        output: [
            {
                file: "dist/cjs/index.js",
                format: 'cjs'
            },
            {
                file: "dist/esm/index.js",
                format: 'esm'
            }
        ],
        external: ['react'],
        plugins: [
            typescript({
                tsconfig: './tsconfig.json',
            }),
            postcss({
                extract: 'index.css',
                modules: true,
                use: ['sass'],
                minimize: true
            }),
            url(),
            svgr({ icon: true }),
            terser(),
        ]
    },
    {
        input: 'dist/esm/index.d.ts',
        output: [{ file: "dist/index.d.ts", format: 'esm' }],
        external: [/\.(css|scss)$/],
        plugins: [dts.default()]
    }
]
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 1
i229194964
@i229194964
Веб разработчик
Ошибка "ReferenceError: require is not defined" может возникать в Next.js при использовании модулей.
Чтобы исправить ошибку место использования require вам нужно будет использовать import в вашем коде Rollup.
import typescript from "@rollup/plugin-typescript";
import postcss from "rollup-plugin-postcss";
import url from "@rollup/plugin-url";
import svgr from "@svgr/rollup";
import { terser } from "rollup-plugin-terser";
import dts from "rollup-plugin-dts";

export default [
  {
    input: "src/index.ts",
    output: [
      {
        file: "dist/cjs/index.js",
        format: "cjs",
      },
      {
        file: "dist/esm/index.js",
        format: "esm",
      },
    ],
    external: ["react"],
    plugins: [
      typescript({
        tsconfig: "./tsconfig.json",
      }),
      postcss({
        extract: "index.css",
        modules: true,
        use: ["sass"],
        minimize: true,
      }),
      url(),
      svgr({ icon: true }),
      terser(),
    ],
  },
  {
    input: "dist/esm/index.d.ts",
    output: [{ file: "dist/index.d.ts", format: "esm" }],
    external: [/\.(css|scss)$/],
    plugins: [dts()],
  },
];
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы