nodejs/node · error · Exception
Missing property '%s'. If you see this error in testing, yo
Error message
Missing property '%s'. If you see this error in testing, you might need to add the property to tools/testrunner/testdata/v8_build_config.json. If you see this error in production, ensure to add the property to the v8_dump_build_config action in V8's top-level BUILD.gn file.
What it means
Raised by BuildConfig.ensure_vars in deps/v8/tools/testrunner/build_config.py when a required build variable name is not present in the BuildConfig keys list (i.e. not loaded from the generated v8_build_config.json). The message points you to add the property either to the test fixture (tools/testrunner/testdata/v8_build_config.json) for tests or to the v8_dump_build_config GN action in the top-level BUILD.gn for production builds.
Source
Thrown at deps/v8/tools/testrunner/build_config.py:55
for key, value in build_config.items():
setattr(self, key, value)
self.keys = list(build_config.keys())
bool_options = [key for key, value in self.items() if value is True]
string_options = [
f'{key}="{value}"'
for key, value in self.items() if value and isinstance(value, str)]
self._str_rep = ', '.join(sorted(bool_options + string_options))
def items(self):
for key in self.keys:
yield key, getattr(self, key)
def ensure_vars(self, build_vars):
for var in build_vars:
if var not in self.keys:
raise Exception(INITIALIZATION_ERROR % var)
def timeout_scalefactor(self, initial_factor):
"""Increases timeout for slow build configurations."""
result = initial_factor
for key, value in SCALE_FACTOR.items():
try:
if getattr(self, key):
result *= value
except AttributeError:
raise Exception(INITIALIZATION_ERROR % key)
if self.arch in SLOW_ARCHS:
result *= 4.5
return result
def __str__(self):
return self._str_rep
View on GitHub (pinned to 1b2de5e052)
Solutions
- In production: add the missing property to the v8_dump_build_config action in deps/v8/BUILD.gn so GN writes it to v8_build_config.json, then rebuild.
- In tests: add the property to tools/testrunner/testdata/v8_build_config.json so the test fixture has it.
- Regenerate the build (gn gen + ninja) so the build-config JSON is refreshed before running tests.
Example fix
null
Defensive patterns
Strategy: validation
Validate before calling
def ensure_build_vars_present(build_config, required):
missing = [v for v in required if v not in build_config.keys]
if missing:
raise ValueError(f'Add missing build vars to BUILD.gn / v8_build_config.json: {missing}') Type guard
def has_all_vars(build_config, required) -> bool:
return all(v in build_config.keys for v in required) Try / catch
null
Prevention
- When you add a build-config consumer, register the var in the v8_dump_build_config GN action immediately.
- Keep tools/testrunner/testdata/v8_build_config.json in sync with production keys.
- Regenerate the build (gn gen + ninja) after editing BUILD.gn before running tests.
When it happens
Trigger: Code calls BuildConfig.ensure_vars([...]) with a var name that was never declared as a BuildConfig key. This happens when a new build-config consumer requests a variable that the build system hasn't been taught to dump yet.
Common situations: Adding a new test or perf feature that depends on a fresh GN variable (e.g. v8_enable_sandbox, v8_enable_maglev) but forgetting to register it in the build-config dump step; running tests against a stale build where v8_build_config.json is out of date.
Related errors
- Phase %s doesn't exist for %s on %s
- Must not specify a build --phase for %s on %s
- args_file specified multiple times in mixins for %s on %s
- gn gen failed
- Unknown mixin "%s"
AI-assisted analysis of nodejs/node@1b2de5e052 (2026-08-13).
Data as JSON: /api/errors/a296a345f1f333e5.
Report an issue: GitHub.