{"record":{"id":"c6248327db28fc48","repo":"evanw/esbuild","slug":"invalid-log-override-key","errorCode":null,"errorMessage":"Invalid log override: ${key}","messagePattern":"Invalid log override: (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"lib/shared/common.ts","lineNumber":221,"sourceCode":"  if (reserveProps) flags.push(`--reserve-props=${jsRegExpToGoRegExp(reserveProps)}`)\n  if (mangleQuoted !== void 0) flags.push(`--mangle-quoted=${mangleQuoted}`)\n\n  if (jsx) flags.push(`--jsx=${jsx}`)\n  if (jsxFactory) flags.push(`--jsx-factory=${jsxFactory}`)\n  if (jsxFragment) flags.push(`--jsx-fragment=${jsxFragment}`)\n  if (jsxImportSource) flags.push(`--jsx-import-source=${jsxImportSource}`)\n  if (jsxDev) flags.push(`--jsx-dev`)\n  if (jsxSideEffects) flags.push(`--jsx-side-effects`)\n\n  if (define) {\n    for (let key in define) {\n      if (key.indexOf('=') >= 0) throw new Error(`Invalid define: ${key}`)\n      flags.push(`--define:${key}=${validateStringValue(define[key], 'define', key)}`)\n    }\n  }\n  if (logOverride) {\n    for (let key in logOverride) {\n      if (key.indexOf('=') >= 0) throw new Error(`Invalid log override: ${key}`)\n      flags.push(`--log-override:${key}=${validateStringValue(logOverride[key], 'log override', key)}`)\n    }\n  }\n  if (supported) {\n    for (let key in supported) {\n      if (key.indexOf('=') >= 0) throw new Error(`Invalid supported: ${key}`)\n      const value = supported[key]\n      if (typeof value !== 'boolean') throw new Error(`Expected value for supported ${quote(key)} to be a boolean, got ${typeof value} instead`)\n      flags.push(`--supported:${key}=${value}`)\n    }\n  }\n  if (pure) for (let fn of pure) flags.push(`--pure:${validateStringValue(fn, 'pure')}`)\n  if (keepNames) flags.push(`--keep-names`)\n}\n\nfunction flagsForBuildOptions(\n  callName: string,\n  options: types.BuildOptions,","sourceCodeStart":203,"sourceCodeEnd":239,"githubUrl":"https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/lib/shared/common.ts#L203-L239","documentation":"The `logOverride` option (which forces a particular log level per syntax feature) is serialized as `--log-override:KEY=value`. An '=' inside the KEY breaks parsing, so such keys are rejected at lib/shared/common.ts:221.","triggerScenarios":"Passing `logOverride: { 'default=foo': 'verbose' }` or any logOverride key containing '='.","commonSituations":"Generated/templated feature names that accidentally embed '='; copy-paste errors.","solutions":["Remove '=' from the logOverride key.","Use the correct feature identifier (e.g. 'no-unused-labels', 'commonjs-import-assertions') without separators that include '='."],"exampleFix":"// before\nawait build({ entryPoints: ['app.ts'], logOverride: { 'commonjs=x': 'verbose' } })\n\n// after\nawait build({ entryPoints: ['app.ts'], logOverride: { 'commonjs': 'verbose' } })","handlingStrategy":"validation","validationCode":"function assertKeysHaveNoEquals(map, name) {\n  for (const k of Object.keys(map ?? {})) {\n    if (k.includes('=')) throw new Error(`${name} key must not contain '=': ${k}`)\n  }\n}\nassertKeysHaveNoEquals(options.logOverride, 'logOverride')","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use esbuild's documented feature identifiers as logOverride keys.","Avoid templating '=' into feature-name keys.","Validate keys when config is generated dynamically."],"tags":["config","validation","log-override"],"backgroundTag":null,"analyzedSha":"f6058f8364fe7ab91ca57a83e02577ed74c9cae4","analyzedAt":"2026-08-09T18:37:22.223Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}