nodejs/node · error · Exception

Only one of the --v8-enable-temporal-support or --v8-disable

Error message

Only one of the --v8-enable-temporal-support or --v8-disable-temporal-support options can be specified at a time.

What it means

configure.py forbids passing both --v8-enable-temporal-support and --v8-disable-temporal-support. These toggle the TC39 Temporal proposal support inside V8 and, like the object-print pair, are validated by a raw sys.argv membership scan rather than an argparse mutex group.

Source

Thrown at configure.py:2264

    if pkg_libs and pkg_libpath:
      output['libraries'] += [pkg_libpath] + pkg_libs.split()
    if pkg_cflags:
      output['include_dirs'] += [flag for flag in [flag.strip() for flag in pkg_cflags.split('-I')] if flag]
  if options.static_zoslib_gyp:
    o['variables']['static_zoslib_gyp'] = options.static_zoslib_gyp
  if flavor != 'linux' and options.v8_enable_hugepage:
    raise Exception('--v8-enable-hugepage is supported only on linux.')
  o['variables']['v8_enable_hugepage'] = 1 if options.v8_enable_hugepage else 0
  if options.v8_enable_short_builtin_calls or o['variables']['target_arch'] == 'x64':
    o['variables']['v8_enable_short_builtin_calls'] = 1
  if options.v8_enable_snapshot_compression:
    o['variables']['v8_enable_snapshot_compression'] = 1
  if all(opt in sys.argv for opt in ['--v8-enable-object-print', '--v8-disable-object-print']):
    raise Exception(
        'Only one of the --v8-enable-object-print or --v8-disable-object-print options '
        'can be specified at a time.')
  if all(opt in sys.argv for opt in ['--v8-enable-temporal-support', '--v8-disable-temporal-support']):
    raise Exception(
        'Only one of the --v8-enable-temporal-support or --v8-disable-temporal-support options '
        'can be specified at a time.')
  if sys.platform != 'darwin':
    if o['variables']['v8_enable_webassembly'] and o['variables']['target_arch'] == 'x64':
      o['variables']['v8_enable_wasm_simd256_revec'] = 1

def configure_openssl(o):
  variables = o['variables']
  variables['node_use_openssl'] = b(not options.without_ssl)
  variables['node_shared_openssl'] = b(options.shared_openssl)
  variables['node_shared_ngtcp2'] = b(options.shared_ngtcp2)
  variables['node_shared_nghttp3'] = b(options.shared_nghttp3)
  variables['openssl_is_fips'] = b(options.openssl_is_fips)
  variables['node_fipsinstall'] = b(False)

  if options.openssl_no_asm:
    variables['openssl_no_asm'] = 1

View on GitHub (pinned to 1b2de5e052)

Solutions

  1. Remove one of the two flags so only your intended Temporal state is expressed.
  2. Drive Temporal from a single variable in your build script and translate it to exactly one configure flag.
  3. Sanity-check argv for known toggle pairs before calling configure.py.

Example fix

// before
./configure --v8-enable-temporal-support --v8-disable-temporal-support
// after
./configure --v8-disable-temporal-support
Defensive patterns

Strategy: validation

Validate before calling

import sys
pair = {'--v8-enable-temporal-support', '--v8-disable-temporal-support'}
assert not pair.issubset(sys.argv), 'pass only one of the temporal-support flags'

Prevention

When it happens

Trigger: Raised when both 'v8-enable-temporal-support' and 'v8-disable-temporal-support' substrings are present in sys.argv via the `all(opt in sys.argv ...)` test.

Common situations: Preset files that appended an override without removing the default; build orchestration that layers a vendor patch enabling Temporal onto a base config that also disables it; flag drift across Node versions where defaults changed.

Related errors


AI-assisted analysis of nodejs/node@1b2de5e052 (2026-08-13). Data as JSON: /api/errors/45595b5729401558. Report an issue: GitHub.