javascript - Konfigurácia Webpacku pre react-pdf v projekte Next.js


Používam knižnicu react-pdf v Next.js na generovanie PDF, zobrazovanie PDF a sťahovanie toho PDF v statickej aplikácii Next.js na strane klienta (server nie je zapojený). Ale nedokážem nastaviť Webpack pre Next.js, pretože o tom nemám veľa znalostí.

Toto je požadované nastavenie pre Webpack pre react-pdf:

const webpack = require('webpack')

module.exports = {
  /* ... */

  resolve: {
    fallback: {
      process: require.resolve('process/browser'),
      zlib: require.resolve('browserify-zlib'),
      stream: require.resolve('stream-browserify'),
      util: require.resolve('util'),
      buffer: require.resolve('buffer'),
      asset: require.resolve('assert'),
    },
  },
  plugins: [
    new webpack.ProvidePlugin({
      Buffer: ['buffer', 'Buffer'],
      process: 'process/browser',
    }),
  ],

  /* ... */
}

A toto je next.config.js:

module.exports = {
  webpack: (config, { buildId, dev, isServer, defaultLoaders, webpack }) => {
    // Important: return the modified config
    return config
  },
}

Odpoveď č. 1

Ten parameter config, ktorý nám poskytuje next.config.js, je ako ten objekt, ktorý exportujeme v bežnom webpack.config.js. Skúste s týmto nastavením next.config.js:

module.exports = {
  webpack: (config, { buildId, dev, isServer, defaultLoaders, webpack }) => {
    config.resolve.fallback = {
      process: require.resolve("process/browser"),
      zlib: require.resolve("browserify-zlib"),
      stream: require.resolve("stream-browserify"),
      util: require.resolve("util"),
      buffer: require.resolve("buffer"),
      asset: require.resolve("assert"),
    };
    config.plugins.push(
      new webpack.ProvidePlugin({
        Buffer: ["buffer", "Buffer"],
        process: "process/browser",
      })
    );
    return config;
  },
};