web-dev-qa-db-fra.com

La génération npm donne «Échec de l'allocation des marqueurs compacts près de la limite de tas»

J'ai un projet reactjs/TypeScript, fonctionnant sur Windows 10. Im essayant de construire par ts-scripts avec

"rimraf ../wwwroot/* && react-scripts-ts build && copyfiles ./build/**/* ../wwwroot/ -u 1

Cela a bien fonctionné auparavant, mais lorsque j'ai supprimé le dossier node_modules-run, réexécutez la commande npm install puis la commande ci-dessus, j'obtiens le message d'erreur

ERREUR FATALE: Échec de l'allocation des marqueurs compacts près de la limite de tas - Mémoire JavaScript insuffisante

Je ne sais pas pourquoi. Après avoir googlé, j'ai vu

NODE_OPTIONS = "- max-old-space-size = 2048" mais je ne sais pas où mettre cela

Message d'erreur complet

Derniers GCs

[11376:0000024682F49880]    60039 ms: Mark-sweep 2034.1 (2085.2) -> 2033.7 (2085.2) MB, 1029.4 / 0.0 ms  (average mu = 0.073, current mu = 0.006) allocation failure scavenge might not succeed
[11376:0000024682F49880]    61094 ms: Mark-sweep 2034.4 (2085.2) -> 2034.1 (2085.7) MB, 1047.7 / 0.0 ms  (average mu = 0.039, current mu = 0.007) allocation failure scavenge might not succeed


 JS stacktrace 
==== JS stack trace =========================================

    0: ExitFrame [pc: 000001CDF84DC5C1]
Security context: 0x007044b9e6e1 <JSObject>
    1: bindChildrenWorker(aka bindChildrenWorker) [000001AD1C0ACD59] [C:\Users\robcar\source\repos\Boost\Boost.Web\ClientApp\node_modules\TypeScript\lib\TypeScript.js:~27657] [pc=000001CDF8FA47CA](this=0x03da79d826f1 <undefined>,node=0x034b8724ab71 <NodeObject map = 000000660468F931>)
    2: bind(aka bind) [000001AD1C0AE2D9] [C:\Users\robcar\source\repos\B...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 00007FF6B5EA121A v8::internal::GCIdleTimeHandler::GCIdleTimeHandler+4810
 2: 00007FF6B5E7A5B6 node::MakeCallback+4518
 3: 00007FF6B5E7AFA0 node_module_register+2160
 4: 00007FF6B610B3EE v8::internal::FatalProcessOutOfMemory+846
 5: 00007FF6B610B31F v8::internal::FatalProcessOutOfMemory+639
 6: 00007FF6B6649304 v8::internal::Heap::MaxHeapGrowingFactor+11476
 7: 00007FF6B663FA67 v8::internal::ScavengeJob::operator=+25543
 8: 00007FF6B663DFDC v8::internal::ScavengeJob::operator=+18748
 9: 00007FF6B6646F57 v8::internal::Heap::MaxHeapGrowingFactor+2343
10: 00007FF6B6646FD6 v8::internal::Heap::MaxHeapGrowingFactor+2470
11: 00007FF6B61E9DD7 v8::internal::Factory::NewFillerObject+55
12: 00007FF6B6281ABA v8::internal::WasmJs::Install+29530
13: 000001CDF84DC5C1
3
Cowborg

Je fais face à ce problème depuis un certain temps. Le problème est probablement dû à une dépendance ou un composant qui est un gros fichier .js. J'utilise actuellement ce package pour résoudre le problème avec succès.

Vous l'installez essentiellement à l'échelle mondiale:

npm install -g increase-memory-limit

Et puis à partir de la racine de votre projet, vous exécutez:

increase-memory-limit

Qui ajoutera --max-old-space-size=4096 dans tous les appels de nœud dans votre node_modules/.bin/* des dossiers.

1
Shezan Kazi

La solution que j'ai utilisée était de mettre à jour la version du nœud js de v1 à v12.


La commande export NODE_OPTIONS=--max_old_space_size=4096 fonctionne mais a des limites, par exemple vous devez disposer de suffisamment de mémoire sur votre machine pour exécuter la génération de production.

1
Onen simon

J'ai eu le même problème sous Windows. La solution était de définir la variable NODE_OPTIONS avant d'exécuter npm run build. Pour définir cette variable, exécutez simplement set NODE_OPTIONS=--max_old_space_size=8192

1
joaopribs