Инструментирование углового проекта для покрытия для испытаний транспортира

#angular #protractor #code-coverage #istanbul

Вопрос:

В Windows я пытаюсь выполнить покрытие кода для своего проекта Angular при выполнении тестов транспортира. Я пытаюсь настроить свой код и выполнил следующие действия:

Я установил переменную NODE_OPTIONS env следующим образом в Windows:

  1. Я создал переменную среды NODE_OPTIONS и установил для нее значение --max_old_space_size=14336 (используя диалоговое окно Системные переменные среды в Windows)
  2. В дополнение к этому в командной строке я выполнил следующую команду: 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
 

По некоторым причинам я не могу поделиться проектом, над которым работаю. Для вашего сведения:

  1. Общий размер всех исходных файлов: 8 МБ
  2. Размер всех файлов .js в dist папке вывода сборки: прибл. 100 МБ

Ответ №1:

Я увеличил размер кучи до 24 ГБ, и, похоже, он работает нормально !

установите NODE_OPTIONS=—max_old_space_size=24576 Также установите NODE_OPTIONS в диалоговом окне Системные переменные env.

Может ли кто-нибудь просмотреть это и подтвердить, является ли это правильным решением?