Create-react-app: Cannot build app - Javascript heap out of memory

Created on 10 May 2018  路  6Comments  路  Source: facebook/create-react-app

Is this a bug report?

yes

Did you try recovering your dependencies?

yes

Environment

Environment:
OS: macOS High Sierra 10.13.4
Node: 10.0.0
Yarn: 1.6.0
npm: 5.6.0
Watchman: Not Found
Xcode: Not Found
Android Studio: Not Found

Packages: (wanted => installed)
react: ^16.3.2 => 16.3.1
react-dom: ^16.3.2 => 16.3.1
react-scripts: 1.1.4 => 1.1.4

Steps to Reproduce

(Write your steps here:)

  1. Have a large app with many files and a lot of dependencies.
  2. Try to build
    (main.js size after a successful build is 2.09 MB)

Expected Behavior

Be able to build app no problem

Actual Behavior

Build failed with error
```Creating an optimized production build...

<--- Last few GCs --->

[68056:0x102802400] 376730 ms: Mark-sweep 1309.1 (1448.0) -> 1309.1 (1450.0) MB, 4215.0 / 0.0 ms allocation failure GC in old space requested
[68056:0x102802400] 380890 ms: Mark-sweep 1309.1 (1450.0) -> 1309.1 (1433.0) MB, 4159.9 / 0.0 ms last resort GC in old space requested
[68056:0x102802400] 385073 ms: Mark-sweep 1309.1 (1433.0) -> 1309.1 (1433.0) MB, 4182.4 / 0.0 ms last resort GC in old space requested

<--- JS stacktrace --->

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

0: ExitFrame [pc: 0x32a59040427d]

Security context: 0x1249ce5a06a9
1: create(this=0x1249ce5844b1 2: push(aka push) [0x1249eac822e1 :~5766] [pc=0x32a5909fea61](this=0x1249eac822e1 )
3: visit [0x1249eac822e1 :~5587] [pc=0x32a5913a228e](this=0x12499c887781 ,node=0x124990db2279

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node::Abort() [/usr/local/bin/node]
2: node::FatalTryCatch::~FatalTryCatch() [/usr/local/bin/node]
3: v8::internal::V8::FatalProcessOutOfMemory(char const, bool) [/usr/local/bin/node]
4: v8::internal::Factory::NewStruct(v8::internal::InstanceType, v8::internal::PretenureFlag) [/usr/local/bin/node]
5: v8::internal::Factory::NewPrototypeInfo() [/usr/local/bin/node]
6: v8::internal::Map::GetOrCreatePrototypeInfo(v8::internal::Handle, v8::internal::Isolate
) [/usr/local/bin/node]
7: v8::internal::Map::GetObjectCreateMap(v8::internal::Handle) [/usr/local/bin/node]
8: v8::internal::Runtime_ObjectCreate(int, v8::internal::Object*, v8::internal::Isolate) [/usr/local/bin/node]
9: 0x32a59040427d
error Command failed with exit code 1.
```

Things I have tried:
using GENERATE_SOURCEMAP=false to build (this was mentioned in an issue). This worked for a while but then started to fail again as the app grew.

Code splitting using react-loadable to code split on routes. This might help a little with the build, but the size of our app comes more from dependencies than the code itself. Also whenever I added the dynamic import to the code it would make recompile time while developing (edit a file and save) take about 20s. This was unbearable to work with.

Unfortunately this is a private repo so I can't post the code.

Most helpful comment

If you're running into this when using npm run build or similar commands, invoking the Node script directly with a memory limit parameter might help:

node --max-old-space-size=4000 scripts/build.js

Applying the parameter to npm run build itself doesn't seem to work, since a new Node process gets launched and it doesn't inherit the memory limit from the parent (and is probably not supposed to, as well :) ); tried on both Window and Mac OS X.

All 6 comments

I don't think we fully support Node 10 yet. Have you tried running this with Node 8?

I just tested with Node 8 and got the same error

Following the above mentioned comment will let you bump the memory limit.

Additionally, you can reduce memory usage by implementing code splitting in your largest bundles via import().

If you're running into this when using npm run build or similar commands, invoking the Node script directly with a memory limit parameter might help:

node --max-old-space-size=4000 scripts/build.js

Applying the parameter to npm run build itself doesn't seem to work, since a new Node process gets launched and it doesn't inherit the memory limit from the parent (and is probably not supposed to, as well :) ); tried on both Window and Mac OS X.

Hi everyone - just checking in as I too am running into the same issue, and had performed the following directly in the Mac OS Terminal (kept on upping the memory):

node --expose-gc --max-old-space-size=32276 node_modules/react-360/scripts/bundle.js

My Mac Laptop has 16 GB of RAM, not running anything else but terminal.

OS is 10.13.6 High Sierra.
HD is 1TB size, so I _think_ it should be enough.

And just attempted to demonstrate building a react 360 app, but it also happens with a react native app.
Suggestions are appreciated.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

rdamian3 picture rdamian3  路  3Comments

fson picture fson  路  3Comments

JimmyLv picture JimmyLv  路  3Comments

barcher picture barcher  路  3Comments

DaveLindberg picture DaveLindberg  路  3Comments