create-react-app `fork-ts-checker-webpack-plugin`没有使用`--max-old-space`选项从`NODE_OPTIONS`中调用,

soat7uwm  于 2个月前  发布在  React
关注(0)|答案(4)|浏览(29)

描述bug

  • fork-ts-checker-webpack-plugin* 没有从 NODE_OPTIONS 调用 --max-old-space

你尝试恢复依赖关系了吗?

$ npm --version
6.14.8
$ node --version
v12.19.1
$ cat package.json | grep \"react-scripts\"
    "react-scripts": "~3.4.3"
$ cat package-lock.json | grep -A 2 \"react-scripts\"
    "react-scripts": {
      "version": "3.4.4",
      "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.4.4.tgz",

环境

FROM node:12.19.1-alpine3.12

PID   USER     TIME  COMMAND
    1 root      0:00 {node} npm
   16 root      0:00 node /opt/app/node_modules/.bin/react-scripts build
   23 root      1:18 node /opt/app/node_modules/react-scripts/scripts/build.js
   34 root      0:51 /usr/local/bin/node --max-old-space-size=2048 /opt/app/node_modules/fork-ts-checker-webpack-plugin/lib/service.js
   45 root      0:00 /bin/sh
   54 root      0:00 ps
/opt/app # cat /proc/34/environ | tr '\0' '\n' | grep NODE_OPTIONS
NODE_OPTIONS=--max-old-space-size=4096
/opt/app # cat .env.production | grep NODE_OPTIONS
NODE_OPTIONS=--max-old-space-size=4096

重现步骤

  • .env.production*

NODE_OPTIONS=--max-old-space-size=4096
node:12.19.1-alpine3.12 docker 镜像中执行 npm run build

预期行为

使用 NODE_OPTIONS 配置的 max-old-space-size 值。

实际行为

总是使用 --max-old-space-size=2048
导致:

<--- Last few GCs --->

[23:0x55822a148e00]   183795 ms: Mark-sweep 987.2 (995.5) -> 986.4 (995.5) MB, 804.3 / 0.2 ms  (average mu = 0.210, current mu = 0.191) allocation failure scavenge might not succeed
[23:0x55822a148e00]   185184 ms: Mark-sweep 987.0 (995.5) -> 986.5 (995.8) MB, 1249.9 / 0.1 ms  (average mu = 0.148, current mu = 0.100) allocation failure GC in old space requested

<--- JS stacktrace --->

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

    0: ExitFrame [pc: 0x558228289b39]
Security context: 0x25445edc08d1 <JSObject>
    1: SourceNode_walk [0x22ffba46da21] [/opt/app/node_modules/webpack-sources/node_modules/source-map/lib/source-node.js:~221] [pc=0x3d2731fba85](this=0x31ad9ffd6409 <SourceNode map = 0x3d40622bbfd9>,0x1b75d4f9e431 <JSFunction (sfi = 0x348957ffd339)>)
    2: SourceNode_walk [0x22ffba46da21] [/opt/app/node_modules/webpack-sources/node_modules/source-map/lib/...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
npm ERR! code ELIFECYCLE
npm ERR! errno 1
wlsrxk51

wlsrxk511#

这个问题已经被自动标记为过时,因为它没有任何最近的活动。如果没有发生任何进一步的活动,它将在5天后被关闭。

9rnv2umw

9rnv2umw2#

NODE_OPTIONS 环境变量通过 .env.* 文件设置被忽略。
例如,我尝试将 NODE_OPTIONS=--openssl-legacy-provider 设置为能够在 Node 17(如此处所述:webpack/webpack#14532(评论))启动CRA应用程序-但没有成功。

bybem2ql

bybem2ql3#

这个问题已经被自动标记为过时,因为它没有任何最近的活动。如果没有发生任何进一步的活动,它将在5天后被关闭。

af7jpaap

af7jpaap4#

我们也在设置变量export NODE_OPTIONS=--max-old-space-size=6144后遇到了相同的错误。

相关问题