> ## 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.

# NestJS

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: "NestJS", 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 [NestJS](https://nestjs.com/).

## Installation

NestJS est instrumenté automatiquement par le package AppSignal pour Node.js.

Lorsque vous appelez `nest start` directement, vous pouvez utiliser la variable d'environnement `NODE_OPTIONS` pour le requérir :

<CodeGroup>
  ```bash Bash theme={null}
  NODE_OPTIONS='--require ./appsignal.cjs' nest start
  ```
</CodeGroup>

Le script de démarrage référence le fichier `appsignal.cjs` qui a été créé [lors de la configuration d'AppSignal](/nodejs/3.x/configuration#minimal-required-configuration).

Pour utiliser AppSignal depuis les commandes `npm` générées lors de la création d'une application avec la commande `nest new`, modifiez les scripts suivants dans la section `scripts` de votre fichier `package.json` comme suit :

<CodeGroup>
  ```json JSON theme={null}
  {
    "scripts": {
      "start": "NODE_OPTIONS='--require ./appsignal.cjs' nest start",
      "start:dev": "NODE_OPTIONS='--require ./appsignal.cjs' nest start --watch",
      "start:debug": "NODE_OPTIONS='--require ./appsignal.cjs' nest start --debug --watch",
      "start:prod": "node --require ./appsignal.cjs dist/main"
    }
  }
  ```
</CodeGroup>

## Fonctionnalités

L'intégration NestJS 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.

Le nom de la classe de contrôleur et la méthode qui a traité la requête seront utilisés comme nom de l'action.

Toutes les erreurs levées par votre application NestJS seront signalées à AppSignal.
