> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Express

export const VersionRequirements = ({versions = []}) => {
  if (!Array.isArray(versions) || versions.length === 0) {
    return null;
  }
  const boundaries = {
    upper: " or lower",
    exact: "",
    lower: " or higher"
  };
  const containerStyle = {
    marginTop: "0.5rem",
    marginBottom: "1.5rem"
  };
  const lineStyle = {
    display: "block",
    margin: "0 0 0.35rem 0",
    fontSize: "0.875rem",
    lineHeight: "1.4"
  };
  const pillBaseStyle = {
    display: "inline-block",
    padding: "0.1em 0.4em",
    borderRadius: "0.25rem",
    border: "1px solid",
    fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
    fontSize: "0.85em",
    fontWeight: 500
  };
  const pillColors = {
    "AppSignal for Elixir": {
      background: "#f3e8ff",
      borderColor: "#e9d5ff",
      color: "#9333ea"
    },
    "AppSignal for Front-end": {
      background: "#fef9c3",
      borderColor: "#fde68a",
      color: "#ca8a04"
    },
    "AppSignal for Go": {
      background: "#ccfbf1",
      borderColor: "#99f6e4",
      color: "#0d9488"
    },
    "AppSignal for JavaScript": {
      background: "#fef9c3",
      borderColor: "#fde68a",
      color: "#ca8a04"
    },
    "AppSignal for Node.js": {
      background: "#dcfce7",
      borderColor: "#bbf7d0",
      color: "#16a34a"
    },
    "AppSignal for Python": {
      background: "#dbeafe",
      borderColor: "#bfdbfe",
      color: "#2563eb"
    },
    "AppSignal for Ruby": {
      background: "#fee2e2",
      borderColor: "#fecaca",
      color: "#dc2626"
    },
    "AppSignal for Rust": {
      background: "#ffedd5",
      borderColor: "#fed7aa",
      color: "#ea580c"
    }
  };
  const defaultPillColor = {
    background: "#f4f4f5",
    borderColor: "#e4e4e7",
    color: "#52525b"
  };
  const getPillStyle = name => ({
    ...pillBaseStyle,
    ...pillColors[name] || defaultPillColor
  });
  const getBoundText = bound => {
    return boundaries[bound] || boundaries.lower;
  };
  return <div style={containerStyle}>
      {versions.map((v, i) => <p key={`${v.name}-${v.version}-${v.bound || "lower"}-${i}`} style={lineStyle}>
          This feature requires{" "}
          <code style={getPillStyle(v.name)}>{v.name}</code> version {v.version}
          {getBoundText(v.bound)}.
        </p>)}
    </div>;
};

<VersionRequirements
  versions={[
{ name: "AppSignal for Node.js", version: "3.0.0" },
{ name: "Express", version: "4.0.0" }
]}
/>

<Note>
  Les instrumentations par défaut peuvent être désactivées via l'option de configuration `disableDefaultInstrumentations`. Vous pouvez en savoir plus sur la façon de la configurer dans notre [documentation des options de configuration](/nodejs/3.x/configuration/options#option-disabledefaultinstrumentations).
</Note>

L'intégration AppSignal pour Node.js pour [Express](https://expressjs.com/).

## Installation

Express est instrumenté automatiquement par le package AppSignal pour Node.js. Afin que les erreurs survenant dans votre application Express soient transmises à AppSignal, suivez les instructions ci-dessous pour configurer le middleware de gestion des erreurs.

## Gestionnaire d'erreurs

Le module contient un middleware pour envoyer toutes les erreurs qui se produisent dans votre application Express à AppSignal.

<CodeGroup>
  ```javascript Node.js theme={null}
  import { expressErrorHandler } from "@appsignal/nodejs";
  // or: const { expressErrorHandler } = require("@appsignal/nodejs");

  const app = express();

  // add this after all routes, but before any other error handlers
  app.use(expressErrorHandler());
  ```
</CodeGroup>

<Tip>
  Seules les exceptions avec un code de statut 500 et supérieur seront signalées
  automatiquement à AppSignal. Pour envoyer à AppSignal des exceptions avec
  d'autres codes de statut, vous pouvez utiliser la [gestion personnalisée des
  exceptions](/nodejs/3.x/instrumentation/exception-handling).
</Tip>

## Fonctionnalités

L'intégration Express enverra à AppSignal un span enfant représentant le temps d'exécution de chaque middleware, ainsi qu'un span enfant pour le gestionnaire de requêtes.

L'intégration utilisera la route de la requête comme nom de l'action. Les paramètres de requête (query) seront envoyés.

Le corps de la requête sera envoyé si `req.body` est présent (par exemple, lorsqu'un middleware d'analyse de corps tel que `body-parser` est utilisé).

Les cookies de la requête seront envoyés si `req.cookies` est présent (par exemple, lorsqu'un middleware d'analyse de cookies tel que `cookie-parser` est utilisé).

Lors de l'utilisation du middleware de gestion d'erreurs, toutes les erreurs levées par le gestionnaire de requêtes ou par l'un des middlewares seront signalées à AppSignal.
