TypeError: X is not a function
This error matches known, documented patterns with reliable solutions.
Quick Fix (Most Common Solution)
- Check the import statement
- Verify the function exists in the module
Seeing "TypeError: X is not a function"? This error can be frustrating, but it's usually fixable. It typically affects your development workflow or system. Below you'll find clear, step-by-step solutions to resolve this issue.
What This Error Means
You tried to call something as a function that is not actually a function.
Frequently documented in developer and vendor support forums.
Not affiliated with browser, OS, or device manufacturers.
New here? Learn why exact error messages matter →
Common Causes
- Wrong import/export syntax
- Undefined variable called as function
- Incorrect destructuring
How to Fix
- Check the import statement
- Verify the function exists in the module
- Log the value before calling it
Last reviewed: April 2026 How we review solutions
Common Misdiagnoses
Three Misdiagnoses Behind "X is not a function"
getUser(id) to return a user object, but the function was refactored to async and now returns a Promise. Calling getUser(id).name fails because Promise.prototype has no name property — the Promise is being treated as the user object.
A related pattern: CommonJS modules that export a function via module.exports = function() {} are imported correctly with const fn = require('./module'). But named exports (exports.fn = function() {}) require destructuring: const { fn } = require('./module'). Mixing these patterns is the most common cause of "is not a function" in projects transitioning from CommonJS to ESM.
A third case: in-place mutating list methods in other languages (like Python's list.sort()) have Array equivalents in JavaScript that do return values. But developers from other backgrounds sometimes call the wrong method variant: Array.prototype.sort() modifies in place and returns the original array, while [...arr].sort() is needed for an immutable copy. The diagnostic approach: console.log(typeof X, X) before the failing call reveals whether you have an unresolved Promise, an undefined value, or a module export mismatch.Optional follow-up
Some users ask whether saving fixes for recurring errors would be useful when the same issue appears again.
Was this explanation helpful?
Frequently Asked Questions
Why is my import undefined?
The module might use default export while you are using named import.
How do I debug this?
Console.log the value before calling to see its actual type.
Also Known As
- Node.js error
- Node runtime error
- JavaScript server error
- Node exception
Common Search Variations
- "node js error fix"
- "node command not working"
- "node app crashing"
- "javascript server error solution"
- "node runtime crash fix"
- "how to debug node error"
Related Errors
Still Stuck?
Paste a different error message or upload a screenshot to get help instantly.