Webpack javascript Heap out of memory - большое количество модулей

Я работаю над проектом с использованием webpack 3.12.0 с Angular 4.3.1. Приложение изначально было довольно большим, и из-за необходимых изменений оно увеличилось, и теперь я получаю эту ошибку:

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of 
memory
1: node_module_register
2: v8::internal::FatalProcessOutOfMemory
3: v8::internal::FatalProcessOutOfMemory
4: v8::internal::Factory::NewFillerObject
5: v8::internal::MemoryReducer::TearDown

Прежде всего, я заметил увеличение числа выходных данных webpack, когда я запускаю простую сборку без удаления и минимизации, что, как я предполагаю, является количеством модулей, скомпилированных webpack:

До:Webpack javascript Heap out of memory - большое количество модулей

После:Webpack javascript Heap out of memory - большое количество модулей

Как видите, мы перешли от 1829 (+1815 скрытых модулей) к 2279 (+2265 скрытых модулей).

Мой первый вопрос: что именно означает число 1829 (и 2279)?

Я попытался увеличить max_old_space_size, но это все равно не работает.

Какие-либо предложения ?

Не могли бы вы поделиться своей конфигурацией веб-пакета?

ChrisR 22.11.2018 13:16

к сожалению, я не могу в связи с политикой компании. Все, что я могу сказать: разница между моим запуском npm и сценарием сборки заключается в том, что сборка запускает uglifyjs-webpack-плагин и babel-minify-webpack-плагин.

Salah Elgo 22.11.2018 13:25

если вы не разглашаете информацию о компании, вы не нарушите правила. А без этого мы не можем увидеть, что идет не так.

PlayMa256 22.11.2018 13:26

вы можете использовать tenser-webpack-plugin и посмотреть, работает ли. На этом этапе babel-minify является избыточным.

PlayMa256 22.11.2018 13:27

Что ж, без конфига помочь вам будет практически невозможно. Удалите "конфиденциальные" части (я даже не знаю, как вы можете иметь конфиденциальную информацию в конфигурации веб-пакета) и опубликуйте их.

ChrisR 22.11.2018 13:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
5
2 055
1

Ответы 1

Я наконец нашел решение.

Причина, по которой приложение внезапно стало больше, - это импорт.

import { BehaviorSubject, Observable } from 'rxjs';

Изменено на:

import { BehaviorSubject  } from 'rxjs/BehaviorSubject';
import { Observable } from 'rxjs/Observable';

Теперь приложение вернулось к своему прежнему размеру, и сборка не вызывает переполнения кучи.

Было ли это потому, что вы импортировали из rxjs в целом, а не из rxjs / ...?

Wassim Katbey 14.05.2021 15:33

Другие вопросы по теме