Spaces:
Runtime error
Runtime error
Aryan Mishra
feat: initial commit - Multilingual ABSA project setup with 6 phases, 36 requirements
a6b96c2 A newer version of the Gradio SDK is available: 6.26.0
Common Bug Patterns
Checklist of frequent bug patterns to scan before forming hypotheses. Ordered by frequency. Check these FIRST β they cover ~80% of bugs across all technology stacks.
Null / Undefined Access
- Null property access β accessing property on
nullorundefined, missing null check or optional chaining - Missing return value β function returns
undefinedinstead of expected value, missingreturnstatement or wrong branch - Destructuring null β array/object destructuring on
null/undefined, API returned error shape instead of data - Undefaulted optional β optional parameter used without default, caller omitted argument
Off-by-One / Boundary
- Wrong loop bound β loop starts at 1 instead of 0, or ends at
lengthinstead oflength - 1 - Fence-post error β "N items need N-1 separators" miscounted
- Inclusive vs exclusive β range boundary
<vs<=, slice/substring end index - Empty collection β
.length === 0falls through to logic assuming items exist
Async / Timing
- Missing await β async function called without
await, gets Promise object instead of resolved value - Race condition β two async operations read/write same state without coordination
- Stale closure β callback captures old variable value, not current one
- Initialization order β event handler fires before setup complete
- Leaked timer β timeout/interval not cleaned up, fires after component/context destroyed
State Management
- Shared mutation β object/array modified in place affects other consumers
- Stale render β state updated but UI not re-rendered, missing reactive trigger or wrong reference
- Stale handler state β closure captures state at bind time, not current value
- Dual source of truth β same data stored in two places, one gets out of sync
- Invalid transition β state machine allows transition missing guard condition
Import / Module
- Circular dependency β module A imports B, B imports A, one gets
undefined - Export mismatch β default vs named export,
import Xvsimport { X } - Wrong extension β
.jsvs.cjsvs.mjs,.tsvs.tsx - Path case sensitivity β works on Windows/macOS, fails on Linux
- Missing extension β ESM requires explicit file extensions in imports
Type / Coercion
- String vs number compare β
"5" > "10"istrue(lexicographic),5 > 10isfalse - Implicit coercion β
==instead of===, truthy/falsy surprises (0,"",[]) - Numeric precision β
0.1 + 0.2 !== 0.3, large integers lose precision - Falsy valid value β value is
0or""which is valid but falsy
Environment / Config
- Missing env var β environment variable missing or wrong value in dev vs prod vs CI
- Hardcoded path β works on one machine, fails on another
- Port conflict β port already in use, previous process still running
- Permission denied β different user/group in deployment
- Missing dependency β not in package.json or not installed
Data Shape / API Contract
- Changed response shape β backend updated, frontend expects old format
- Wrong container type β array where object expected or vice versa,
datavsdata.resultsvsdata[0] - Missing required field β required field omitted in payload, backend returns validation error
- Date format mismatch β ISO string vs timestamp vs locale string
- Encoding mismatch β UTF-8 vs Latin-1, URL encoding, HTML entities
Regex / String
- Sticky lastIndex β regex
gflag with.test()then.exec(),lastIndexnot reset between calls - Missing escape β
.matches any char,$is special, backslash needs doubling - Greedy overmatch β
.*eats through delimiters, need.*? - Wrong quote type β string interpolation needs backticks for template literals
Error Handling
- Swallowed error β empty
catch {}or logs but doesn't rethrow/handle - Wrong error type β catches base
Errorwhen specific type needed - Error in handler β cleanup code throws, masking original error
- Unhandled rejection β missing
.catch()or try/catch aroundawait
Scope / Closure
- Variable shadowing β inner scope declares same name, hides outer variable
- Loop variable capture β all closures share same
var i, useletor bind - Lost this binding β callback loses context, need
.bind()or arrow function - Scope confusion β
varhoisted to function,let/constblock-scoped
How to Use This Checklist
- Before forming any hypothesis, scan the relevant categories based on the symptom
- Match symptom to pattern β if the bug involves "undefined is not an object", check Null/Undefined first
- Each checked pattern is a hypothesis candidate β verify or eliminate with evidence
- If no pattern matches, proceed to open-ended investigation
Symptom-to-Category Quick Map
| Symptom | Check First |
|---|---|
| "Cannot read property of undefined/null" | Null/Undefined Access |
| "X is not a function" | Import/Module, Type/Coercion |
| Works sometimes, fails sometimes | Async/Timing, State Management |
| Works locally, fails in CI/prod | Environment/Config |
| Wrong data displayed | Data Shape, State Management |
| Off by one item / missing last item | Off-by-One/Boundary |
| "Unexpected token" / parse error | Data Shape, Type/Coercion |
| Memory leak / growing resource usage | Async/Timing (cleanup), Scope/Closure |
| Infinite loop / max call stack | State Management, Async/Timing |