fork-ts-checker-webpack-plugin: Heap out of memory `memoryLimit` issue in ForkTsCheckerWebpackPlugin
Current behavior
Upgraded to start using electron-webpack and upgraded all our packages to newer versions.
Expected behavior
Typescript and webpack should compile code
Steps to reproduce the issue
use electron webpack with typescript?
Issue reproduction repository
Environment
- fork-ts-checker-webpack-plugin: [version from the
package.json] in node modules under /electron-webpack-ts/package.json fork-ts-checker-webpack-plugin: 0.5.2 - typescript: [version from the
package.json] typescript: 3.4.5 - tslint: [version from the
package.json] “tslint”: “^5.14.0”, - webpack: [version from the
package.json] “webpack”: “4.28.4” - os: [e.g. Ubuntu 19.04] Ubuntu 18.04
<--- Last few GCs --->
[8366:0x3f04ad0] 23325 ms: Mark-sweep 2042.0 (2085.7) -> 2041.3 (2086.2) MB, 734.9 / 0.0 ms (average mu = 0.102, current mu = 0.013) allocation failure scavenge might not succeed
[8366:0x3f04ad0] 24138 ms: Mark-sweep 2043.2 (2086.2) -> 2042.5 (2087.2) MB, 807.7 / 0.0 ms (average mu = 0.055, current mu = 0.007) allocation failure scavenge might not succeed
<--- JS stacktrace --->
==== JS stack trace =========================================
0: ExitFrame [pc: 0x309d6aa5be1d]
1: StubFrame [pc: 0x309d6aa5d1df]
Security context: 0x124119b1e6e9 <JSObject>
2: getIntersectionType(aka getIntersectionType) [0x1a0a8652b3a1] [/home/marcus/work/ClientElectron/node_modules/typescript/lib/typescript.js:~39985] [pc=0x309d6b65f1d2](this=0x0d5af00026f1 <undefined>,types=0x3352c04a57b9 <JSArray[23]>,aliasSymbol=0x0d5af00026f1 <undefined>,aliasTypeArguments=0x0d5af00026f1 <undefine...
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 0x8dc510 node::Abort() [/home/marcus/.nvm/versions/node/v10.15.3/bin/node]
2: 0x8dc55c [/home/marcus/.nvm/versions/node/v10.15.3/bin/node]
3: 0xad9b5e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/home/marcus/.nvm/versions/node/v10.15.3/bin/node]
4: 0xad9d94 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/home/marcus/.nvm/versions/node/v10.15.3/bin/node]
5: 0xec7bf2 [/home/marcus/.nvm/versions/node/v10.15.3/bin/node]
6: 0xec7cf8 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/home/marcus/.nvm/versions/node/v10.15.3/bin/node]
7: 0xed3dd2 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/home/marcus/.nvm/versions/node/v10.15.3/bin/node]
8: 0xed4704 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/home/marcus/.nvm/versions/node/v10.15.3/bin/node]
9: 0xed7371 v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/home/marcus/.nvm/versions/node/v10.15.3/bin/node]
10: 0xea07f4 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/home/marcus/.nvm/versions/node/v10.15.3/bin/node]
11: 0x114018e v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/home/marcus/.nvm/versions/node/v10.15.3/bin/node]
12: 0x309d6aa5be1d
Error from running electron-webpack dev
┏ Renderer -------------------
Type checking and linting aborted - probably out of memory. Check `memoryLimit` option in ForkTsCheckerWebpackPlugin configuration.
┗ ----------------------------
┏ Main -----------------------
Type checking and linting aborted - probably out of memory. Check `memoryLimit` option in ForkTsCheckerWebpackPlugin configuration.
┗ ----------------------------
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 45 (10 by maintainers)
Hey guys, has anyone been able to fix the type checking memory leak issue?
I’m considering a
skipLibChecktattoo. Or I would be if I wasn’t already filled with regret about thenoImplicitAnyone I got one drunken night in 2014It should be the problem of this. https://github.com/microsoft/TypeScript/issues/31227
use
npm i typescript@3.3.4000to solve the problemCould be worth upping your
memoryLimithttps://github.com/Realytics/fork-ts-checker-webpack-plugin/blob/master/README.md#options
Wrestled with this issue for quite some time in a Create React App TypeScript project with MUI. Seeing you reference
SxPropsmade me scan my project for places I was including it. Sure enough, I defined a Type that extended a MUI component and defined an optionalsxproperty (probably wrote the Type before making it extend the MUI component). Removing the override solved the problem 😄 Thank you @joriswI had made a copy of the node_modules folder in the same directory that led to me getting this error. Deleting the copied folder resolved it for me.
This fixed an issue for us on a TypeScript project using MUI as well. The memory issue is gone after removing the
SxPropsdirect import.@Chnapy I’m having the same issue I have turned off
and it’s working using typescript 3.7.5 and fork-ts-checker-webpack-plugin 4.0.3
@the-rpc we were having a similar issue with a CRA with Typescript project using MUI v6!!
You helped us pin the same issue we were experiencing when executing
react-scripts build: importingSxPropsdirectly fromimport { SxProps } from '@mui/system';or evenimport { SxProps } from '@mui/materials/styles';resulted in a memory leak!The solution was to import
sx’s type directly from the MUI component, for instanceSelectProps['sx'],ButtonProps['sx']etc… 😅I hope MUI can fix the way they export their types…
Did someone managed to fix this issue?
Working flawlessly for me after upping the
memoryLimiton the plugin itself via React App Rewired. (Because it forks, adjusting memory settings on the parent process don’t help.)config-overrides.js https://gist.github.com/edwingustafson/ee786fe26c6a7fae394321a892698f64
Discovered my confusion by inspecting the command line via
ps wwwauxon my development box: it showed the plugin’s process getting the default memory limit as a command line option.Another thing that just came up in a conversation with colleague: you should not import from
@material-ui/iconsdirectly.Do
import Close from "@material-ui/icons/Close";instead ofimport {Close} from '@material-ui/icons'maybe that helps
PS: the same thing, albeit with a lower impact applies to
@material-ui/coreFirst thing I am noticing: you are including all .d.ts in node_modules which will include these in the typecheck - usually those should be automatically included as they are the default value of
typeRoots. Does everything keep working when you remove them fromincludein thetsconfig.json? If not, try usingcompilerOptions.typeRootsinstead ofincludefor those.PS: just invoking
tsc --noEmittakes about 80 seconds on my system. That project has less than 100 files, that should take at most 5 seconds. Something is very off there, but it has nothing to do with fork-ts-checker-webpack-pluginPPS:
tsc --noEmit --skipLibCheckis down to 50 seconds. That’s a first step.Hi,
I also have a memory issue on type checking, since I upgraded one of my project lib (
react-scriptsfrom 2.1 to 3.X (tried with 3.0.1, 3.2.0, 3.3.0).Note that
react-scriptsusesfork-ts-checker-webpack-plugin3.1.0 in its webpack config. I use typescript 3.3.3 (also tried with 3.7.5).When I try a build, it takes like 5min then fails with this error stack:
I tried to increase the memory limit to 9000 as a test, in this case the process takes like 10min before failing (the node process takes until 9go of memory…).
There is an issue with my project types, but I have no idea where to check, the error message doesn’t help me at all.
There is a way to add logs during type checking, or anything else that can help me to find the issue root cause ? Thanks
Seems to be the problem issuer is not that plugin or typescript itself.
For me the problem issuer was
mongodbpackage < v5 with its declarations , upgrade to > v5 solves the problem. You can also find issuer by paste each of your sources path (nested too) intsconfig.js’sincludefield, just restart app and wait for stuck. It took only 5 mins to find bad dependency in my project.@Mikado68 this issue is 3 years old, no idea if that is still relevant. By then it was the difference between importing all icons (that file was non-treeshakable) and only one.
@ChuckJonas This is most likely a TypeScript issue 😃
using material ui and CRA, I run out of memory whenever I use styled components:
Turns out the problem I was having, was related to TypeScript being bad at handling use of the spread (…) operator on objects that have union types. Using Object.assign() instead fixes it.
Discussion: https://github.com/system-ui/theme-ui/discussions/1162#discussioncomment-59480
In my case, I was importing style object definitions targeting ThemeUI, each typed as a
SxStyleProp, then doing composition with the imported objects to create different styles for different states, like so:Apparently importing and composing these typed objects made the typechecker go into a memory leak of some sort. Removing the
: SxStyleProptyping from each of my exported styles instyles.ts, made the problem go away.As you can see, a pretty specific use case, so our problems are likely to be very different.
@marcusjwhelan could you share that repro so I could take a peek? (No guarantees though.) Sometimes there are just TS patterns that lead to a looot of memory consumption.
@johnnyreilly I moved the memory to 8192 but still failed with the same error just takes a little longer. I believe after talking to someone from electron-webpack that my issue could be a memory leak having to do with Typescript itself.