You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Handlers written as exports.foo = () => {} / exports.foo = async () => {} (a very common Express/CommonJS controller style) don't seem to be indexed as function nodes. node/callers can't find them, and calls into them collapse to file level (the calling function is lost).
Repro:
controller.js:
exports.getItems=async(req,res)=>{/* ... */};
wired in a router: router.get('/items', getItems)
codegraph node getItems → "Symbol not found", although it's a real, route-wired handler.
Impact: in one real Express codebase, 60+ route handlers written in this style are invisible to the graph, so impact/callers analysis silently misses them.
Ask: index the exports.<name> = (arrow | async arrow | function) assignment form as a function node — the same treatment const X = () => {} already gets.
Reproduced on 1.6.0 and fixed in #1678: exports.NAME = <arrow|function> and module.exports.NAME = … are extracted as exported function nodes (both the wasm walker and the kernel), so node getItems / callers find the handler and its calls belong to it rather than the file. Other member assignments (handlers.onSave = () => {}) are untouched.
Fixed and verified on Linux in #1771 (lands conflict-resolved #1678 onto current main).
exports.NAME = <arrow|function> and module.exports.NAME = … are now extracted as exported function nodes in both the wasm walker and the kernel, so node / callers find the handlers and their calls belong to them rather than the file. Other member assignments (handlers.onSave = () => {}) stay untouched.
Activity
danusha2345 commentedon Sep 4, 2026
Reproduced on 1.6.0 and fixed in #1678:
exports.NAME = <arrow|function>andmodule.exports.NAME = …are extracted as exported function nodes (both the wasm walker and the kernel), sonode getItems/callersfind the handler and its calls belong to it rather than the file. Other member assignments (handlers.onSave = () => {}) are untouched.colbymchenry commentedon Sep 8, 2026
Fixed and verified on Linux in #1771 (lands conflict-resolved #1678 onto current
main).exports.NAME = <arrow|function>andmodule.exports.NAME = …are now extracted as exported function nodes in both the wasm walker and the kernel, sonode/callersfind the handlers and their calls belong to them rather than the file. Other member assignments (handlers.onSave = () => {}) stay untouched.Re-index JavaScript projects after upgrading.
fix(extraction): index CommonJS export assignments as functions (#1675)…
Merge origin/main (8733c28) into fork/consolidated