🟨 JavaScript

x is not a function

Vous appelez quelque chose comme une fonction (`()`) alors que ce n'est pas une fonction : c'est `undefined`, un objet, une chaîne, ou la méthode n'existe pas.

Message d'erreur
TypeError: myVar.doSomething is not a function

🔍 Cause la plus probable

Soit l'import/le nom est incorrect, soit `this` a perdu son contexte (callback détaché), soit l'objet ne possède pas cette méthode.

✅ Solution étape par étape

  1. Vérifiez que la variable est bien ce que vous croyez : `console.log(typeof myVar, myVar)`.
  2. Contrôlez l'import : un export `default` importé entre accolades (ou l'inverse) donne `undefined`.
  3. Si c'est une méthode de classe utilisée en callback, liez le contexte avec une arrow function.
// perte de this ❌
button.addEventListener('click', this.handle);

// conserve this ✅
button.addEventListener('click', () => this.handle());

🧩 Autres causes possibles

Mauvais type retourné par une API

L'API a renvoyé un objet alors que vous attendiez un tableau : vérifiez avant d'appeler `.map()` / `.filter()`.

Version de librairie différente

La méthode a été renommée/supprimée dans une nouvelle version : consultez le changelog.

🛡️ Comment l'éviter à l'avenir

Typage strict TypeScript + tests unitaires sur les fonctions utilitaires. Préférez les arrow functions pour préserver `this`.

🔒 Votre erreur est différente ?

Collez votre message d'erreur dans notre analyseur IA. Traitement anonymisé, rien n'est stocké.

Analyser mon erreur avec l'IA

Bloqué sur un bug plus complexe ?

Nos développeurs Java, Spring & Angular débuggent, optimisent et livrent votre projet.

Parler à un développeur