{"record":{"id":"766432972da09517","repo":"evanw/esbuild","slug":"invalid-define-key","errorCode":null,"errorMessage":"Invalid define: ${key}","messagePattern":"Invalid define: (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"lib/shared/common.ts","lineNumber":215,"sourceCode":"  if (treeShaking !== void 0) flags.push(`--tree-shaking=${treeShaking}`)\n  if (ignoreAnnotations) flags.push(`--ignore-annotations`)\n  if (drop) for (let what of drop) flags.push(`--drop:${validateStringValue(what, 'drop')}`)\n  if (dropLabels) flags.push(`--drop-labels=${validateAndJoinStringArray(dropLabels, 'drop label')}`)\n  if (absPaths) flags.push(`--abs-paths=${validateAndJoinStringArray(absPaths, 'abs paths')}`)\n  if (mangleProps) flags.push(`--mangle-props=${jsRegExpToGoRegExp(mangleProps)}`)\n  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')}`)","sourceCodeStart":197,"sourceCodeEnd":233,"githubUrl":"https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/lib/shared/common.ts#L197-L233","documentation":"The `define` option is serialized as `--define:KEY=value`. An '=' character inside the KEY would break the CLI parser's key/value split, so esbuild rejects any define key containing '=' at lib/shared/common.ts:215. The value side may contain '=' freely.","triggerScenarios":"Passing `define: { 'a=b': '1' }` or any define key whose identifier string contains an '='.","commonSituations":"Dynamically generated define keys (e.g. from env vars or templated strings) that accidentally include '='; mis-formatted 'key=value' pairs stuffed into the key position.","solutions":["Remove the '=' from the define key.","If you intended 'key=value', put the value on the value side: define: { key: 'value' }.","Sanitize generated keys by stripping/replacing '='."],"exampleFix":"// before\nawait build({ entryPoints: ['app.ts'], define: { 'NODE_ENV=prod': '1' } })\n\n// after\nawait build({ entryPoints: ['app.ts'], define: { NODE_ENV: 'prod' } })","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.define, 'define')","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep define keys as bare identifiers (e.g. 'process.env.NODE_ENV') with no '='.","Put the value on the right-hand side, never in the key.","Sanitize keys generated from env/templating by replacing '='."],"tags":["config","validation","define"],"backgroundTag":null,"analyzedSha":"f6058f8364fe7ab91ca57a83e02577ed74c9cae4","analyzedAt":"2026-08-09T18:37:22.223Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}