Node: v6.12.0: max-old-space-size can no longer be set via NODE_OPTIONS

Created on 13 Nov 2017  Â·  9Comments  Â·  Source: nodejs/node

  • v6.12.0
  • Darwin nolmac.local 16.7.0 Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64 x86_64

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

Most helpful comment

Ah - that'll be where #14093 comes in

All 9 comments

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

Was this page helpful?
0 / 5 - 0 ratings