As of node 6.12.0, the V8 option --max-old-space-size is no longer accepted in the NODE_OPTIONS environment variable and node exits with an error if specified.
With 6.11.5, the following works:
$ nvm use 6.11
Now using node v6.11.5 (npm v3.10.10)
$ NODE_OPTIONS="--max-old-space-size=128" node -v
v6.11.5
With 6.12.0, it fails:
$ nvm use 6.12
Now using node v6.12.0 (npm v3.10.10)
$ NODE_OPTIONS="--max-old-space-size=128" node -v
node: --max-old-space-size=128 is not allowed in NODE_OPTIONS
I can't find the release notes for 6.12 in case this was an intentional change, but the docs still list it as a valid option to specify via NODE_OPTIONS: https://nodejs.org/api/cli.html#cli_node_options_options
Some tests on Windows 7 x64, cmd.exe shell:
> set NODE_OPTIONS="--max-old-space-size=128" && node.06.12.0.exe -v
node.06.12.0.exe: "--max-old-space-size=128" is not supported in NODE_OPTIONS
> set NODE_OPTIONS="--max_old_space_size=128" && node.06.12.0.exe -v
node.06.12.0.exe: "--max_old_space_size=128" is not supported in NODE_OPTIONS
> set NODE_OPTIONS=--max-old-space-size=128 && node.06.12.0.exe -v
node.06.12.0.exe: --max-old-space-size=128 is not allowed in NODE_OPTIONS
> set NODE_OPTIONS=--max_old_space_size=128 && node.06.12.0.exe -v
v6.12.0
With the last current:
> set NODE_OPTIONS="--max-old-space-size=128" && node -v
node: "--max-old-space-size=128" is not supported in NODE_OPTIONS
> set NODE_OPTIONS="--max_old_space_size=128" && node -v
node: "--max_old_space_size=128" is not supported in NODE_OPTIONS
> set NODE_OPTIONS=--max-old-space-size=128 && node -v
v9.1.0
> set NODE_OPTIONS=--max_old_space_size=128 && node -v
v9.1.0
On my OSX x64 (first entry same as in my original comment):
$ NODE_OPTIONS="--max-old-space-size=128" node -v
node: --max-old-space-size=128 is not allowed in NODE_OPTIONS
$ NODE_OPTIONS="--max_old_space_size=128" node -v
v6.12.0
As of node 6.12.0, the V8 option --max-old-space-size is no longer accepted in the NODE_OPTIONS environment variable and node exits with an error if specified.
6.12.0 is the first 6.x release to include NODE_OPTIONS, the command doesn't error in 6.11.5 because the env var isn't read.
Test with --debug-brk (note there's no debugger statement on the second line):
â–¶â–¶â–¶ nvm use 6.12.0 ~/wrk/com/node 1s (2fdb606dac*)
Now using node v6.12.0 (npm v3.10.10)
â–¶â–¶â–¶ NODE_OPTIONS=--debug-brk node ~/wrk/com/node 1s (2fdb606dac*)
Debugger listening on [::]:5858
> % â–¶â–¶â–¶ nvm use 6.11.5 ~/wrk/com/node (2fdb606dac*)
Now using node v6.11.5 (npm v3.10.10)
â–¶â–¶â–¶ NODE_OPTIONS=--debug-brk node ~/wrk/com/node 1s (2fdb606dac*)
> %
It was added in https://github.com/nodejs/node/pull/12028, you can see the PR in the release post.
@gibfahn ahhh that explains a lot, and I now see why I was getting confused by this.
Our service script uses an env var called NODE_OPTIONS to pass options to node:
ExecStart=/usr/bin/env node-red-pi $NODE_OPTIONS $NODE_RED_OPTIONS
An unfortunate clash of names now that NODE_OPTIONS is also used by the node executable itself.
Sounds like there was some other stuff going on in your case, but I'll take this as a vote for backporting https://github.com/nodejs/node/pull/14093 to v6.x.
Oh, but is there still an issue here though...
$ NODE_OPTIONS="--max-old-space-size=128" node -v
node: --max-old-space-size=128 is not allowed in NODE_OPTIONS
$ NODE_OPTIONS="--max_old_space_size=128" node -v
v6.12.0
max-old-space-size is rejected but max_old_space_size works. The docs say the former should be accepted. Is that down to the underlying V8 version?
Ah - that'll be where #14093 comes in
This is only supported in node version 8
Most helpful comment
Ah - that'll be where #14093 comes in