我有一个在Windows 10上运行的reactjs / typescript项目。我试图用ts-scripts构建
“ rimraf ../wwwroot/* && react-scripts-ts构建&&复制文件 ./build/**/* ../wwwroot/ -u 1
这以前工作正常,但是当我删除了node_modules-folder时,重新运行npm install-command,然后运行上面的命令,我得到了错误消息
致命错误:接近堆限制分配的无效标记压缩 失败-JavaScript堆内存不足
我不知道为什么。在我看过谷歌之后
NODE_OPTIONS =“ – max-old-space-size = 2048” 但我不知道该放在哪里
完整的错误消息
前几个GC
[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
答案 0 :(得分:15)
我使用的解决方案是将节点js版本从 v10 升级到 v12 。
命令export NODE_OPTIONS=--max_old_space_size=4096
有效,但是有一些限制,例如您应该在计算机上有足够的内存来运行生产版本。
答案 1 :(得分:2)
问题的根本原因是源文件过大。
您可以分两步解决问题。
"start": "react-scripts --max_old_space_size=4096 start",
"build": "react-scripts --max_old_space_size=4096 build"
set NODE_OPTIONS=--max_old_space_size=4096
export NODE_OPTIONS=--max_old_space_size=4096
另请注意,如果您使用的是非常低的内存,例如 512MB,那么您必须将其升级到至少 2GB 以获得更好的结果。
这里我使用了 4096MB = 4GB 大小,但您可以根据您的机器配置(特别是 RAM)更改此大小。您可以将其设置为 2GB 或 1GB 并检查应用程序。
答案 2 :(得分:1)
尽管在Mac计算机上,我也遇到类似的问题。 对我来说,诀窍是设置环境变量。这样,您的节点进程将获取该值并独立于所运行的脚本来使用它。
export NODE_OPTIONS =-max_old_space_size = 4096
再次运行命令。祝你好运!
答案 3 :(得分:1)
我认为解决方案不是增加内存限制。这样,问题总是会被推迟。
我已经两次遇到此问题。我已经解决了,每次:
node
(v12.11.1
,react v16.13.1
和react-scripts v3.2.0
); npm
切换到yarn
(node v12.11.1
,react v16.13.1
和react-scripts v3.4.1
)。此外,检查您的package.json
,删除package-lock.json
,删除node-modules
文件夹,然后尝试重新安装依赖项。
接下来尝试构建您的项目。
答案 4 :(得分:1)
增加节点max_old_space后得到修复。解决方法是这里。
代替运行npm start或ng start。运行以下命令
node --max_old_space_size = 8048 ./node_modules/@angular/cli/bin/ng服务
OR
您也可以在package.json文件中添加命令
“开始”:“ node --max_old_space_size = 8048 ./node_modules/@angular/cli/bin/ng服务”
答案 5 :(得分:0)
我在Windows上遇到了同样的问题。解决方案是在运行npm run build之前设置NODE_OPTIONS变量。要设置此变量,只需运行set NODE_OPTIONS=--max_old_space_size=8192
答案 6 :(得分:0)
我已经面对这个问题已有一段时间了。该问题很可能是由依赖项或较大的.js文件组件引起的。我目前正在使用this package来成功解决此问题。
您基本上是在全局安装的:
npm install -g increase-memory-limit
然后从项目根目录中运行:
increase-memory-limit
这会将--max-old-space-size=4096
附加到node_modules/.bin/*
文件内的所有节点调用中。
答案 7 :(得分:0)
这是我在 package.json 运行命令中写的
<块引用>“脚本”:{ "build": "node --max_old_space_size=4096 build/build.js" }
基本上,您必须在实际构建命令之前运行 --max_old_space_size=4096