#angular #protractor #code-coverage #istanbul
Вопрос:
В Windows я пытаюсь выполнить покрытие кода для своего проекта Angular при выполнении тестов транспортира. Я пытаюсь настроить свой код и выполнил следующие действия:
Я установил переменную NODE_OPTIONS env следующим образом в Windows:
- Я создал переменную среды
NODE_OPTIONS
и установил для нее значение--max_old_space_size=14336
(используя диалоговое окно Системные переменные среды в Windows) - В дополнение к этому в командной строке я выполнил следующую команду:
set NODE_OPTIONS=--max_old_space_size=14336
(Я предполагаю, что используемая память будет 14 ГБ)
.nycrc
В корневую папку проекта добавлен следующий файл:
{
"extends": "@istanbuljs/nyc-config-typescript",
"all": true,
"report-dir": ".cypress-coverage",
"extension": [
".js",
".ts",
".tsx"
],
"exclude": [
"**/*.test.{ts,tsx}"
],
"reporter": [
"json",
"html"
],
"parserPlugins": [
"decorators-legacy",
"decorators",
"typescript"
]
}
Затем из корневой папки проекта я запустил команду для инструментирования с помощью istandul:
nyc instrument ./dist ./coverage/instrumented
(пожалуйста, обратите внимание: dist
папка содержит выходные данные сборки углового проекта (дистрибутив))
через несколько минут после выполнения команды было сообщено об этой ошибке:
D:myproj>nyc instrument ./dist ./coverage/instrumented
<--- Last few GCs --->
[11804:0000022A18C7C510] 1864090 ms: Scavenge (reduce) 14315.9 (14349.6) -> 14315.3 (14349.9) MB, 51.1 / 0.0 ms (average mu = 0.346, current mu = 0.310) allocation failure
[11804:0000022A18C7C510] 1864137 ms: Scavenge (reduce) 14316.1 (14346.9) -> 14315.5 (14347.9) MB, 22.1 / 0.0 ms (average mu = 0.346, current mu = 0.310) allocation failure
<--- JS stacktrace --->
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 00007FF75D643E0F napi_wrap 108911
2: 00007FF75D5E7E16 v8::base::CPU::has_sse 61910
3: 00007FF75D5E8D16 node::OnFatalError 294
4: 00007FF75DEC0CEE v8::Isolate::ReportExternalAllocationLimitReached 94
5: 00007FF75DEA5ACD v8::SharedArrayBuffer::Externalize 781
6: 00007FF75DD4F95C v8::internal::Heap::EphemeronKeyWriteBarrierFromCode 1516
7: 00007FF75DD5ACEA v8::internal::Heap::ProtectUnprotectedMemoryChunks 1258
8: 00007FF75DD57E99 v8::internal::Heap::PageFlagsAreConsistent 2457
9: 00007FF75DD4CA71 v8::internal::Heap::CollectGarbage 2033
10: 00007FF75DD4AC95 v8::internal::Heap::AllocateExternalBackingStore 1349
11: 00007FF75DD6AFEB v8::internal::Factory::NewFillerObject 203
12: 00007FF75DA99E0F v8::internal::interpreter::JumpTableTargetOffsets::iterator::operator= 1039
13: 00007FF75DF49BAD v8::internal::SetupIsolateDelegate::SetupHeap 465229
14: 000000E91F5021E8
По некоторым причинам я не могу поделиться проектом, над которым работаю. Для вашего сведения:
- Общий размер всех исходных файлов: 8 МБ
- Размер всех файлов .js в
dist
папке вывода сборки: прибл. 100 МБ
Ответ №1:
Я увеличил размер кучи до 24 ГБ, и, похоже, он работает нормально !
установите NODE_OPTIONS=—max_old_space_size=24576 Также установите NODE_OPTIONS в диалоговом окне Системные переменные env.
Может ли кто-нибудь просмотреть это и подтвердить, является ли это правильным решением?