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
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.
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.
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