Плохой файл Webpack вызывает «Превышен максимальный размер стека вызовов» с помощью методов получения и установки класса ES6? - PullRequest
0 голосов
/ 28 декабря 2018

Uncaught RangeError: Превышен максимальный размер стека вызовов

Эта ошибка довольно хорошо задокументирована здесь и в других местах, и я понимаю, что получатель действительно вызывает себя снова и снова.

Но с приведенной ниже конфигурацией Webpack, тот же код Klass не зацикливается бесконечно со стандартной create-react-app настройкой Webpack .Чего не хватает в моей конфигурации Webpack?

index.js

class Klass {

  constructor() {
    this.alreadyCame = !!this.clientId;
  }

  get clientId() {
    const clientId = Cookie.get(Cookie.cookies.client);
    if (clientId !== undefined) {
      return decode(clientId);
    }
    else {
      this.clientId = uuid();
      return this.clientId;
    }
  }

  set clientId(value) {
    if (value !== undefined) {
      Cookie.set(Cookie.cookies.client, encode(value), Cookie.duration.long);
    }
  }
}


export default new Klass();

webpack.config.development.js

const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');


module.exports = {
  bail: true,
  entry: path.resolve(__dirname, 'src/index.js'),
  mode: 'development',
  module: {
    rules: [{
      oneOf: [
        {
          include: path.resolve(__dirname, 'src/'),
          loader: 'babel-loader',
          options: {
            cacheDirectory: true,
            plugins: [
              '@babel/plugin-proposal-class-properties',
            ],
            presets: [
              '@babel/preset-env',
              '@babel/preset-react',
            ],
          },
          test: /\.js$/,
        },
        {
          include: path.resolve(__dirname, 'src/'),
          use: [
            {loader: 'css-loader'},
            {loader: 'sass-loader'},
          ],
          test: /\.(sass|scss)$/,
        },
      ],
    }],
    strictExportPresence: true,
  },
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'build/'),
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: path.resolve(__dirname, 'public/index.html'),
    }),
  ],
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...