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

# Migratiegids

<Note>
  🛟 Aarzel niet om [contact met ons op te
  nemen](mailto:support@appsignal.com) als u problemen ondervindt bij het
  upgraden van het AppSignal voor Node.js-pakket van uw applicatie. We helpen u
  graag verder!
</Note>

Deze documentatie beschrijft de wijzigingen tussen de 2.x- en 3.x-releases van het Node.js-pakket van AppSignal.

Als u upgradet van 2.x naar 3.x moet u uw integratie aanpassen zodat deze succesvol blijft werken.

Mocht u tegen problemen aanlopen bij het upgraden van uw applicatie, neem dan vooral [contact met ons op](mailto:support@appsignal.com) voor ondersteuning.

## 3.x installeren

Voer het volgende commando uit in de hoofdmap van uw applicatie om AppSignal voor Node.js 3.x te installeren.

#### npm

<CodeGroup>
  ```bash Bash theme={null}
  npm install @appsignal/nodejs
  ```
</CodeGroup>

## AppSignal-client

Wanneer u upgradet van 2.x naar 3.x, moet u wijzigen hoe uw applicatie de AppSignal-client initialiseert en benadert.

### AppSignal-client initialiseren

Om de AppSignal-client te initialiseren en te exporteren, dient u een nieuw `appsignal.cjs`-bestand aan te maken, zoals in onderstaand voorbeeld:

<CodeGroup>
  ```javascript Node.js theme={null}
  // appsignal.cjs

  const { Appsignal } = require("@appsignal/nodejs");

  const appsignal = new Appsignal({
    active: true,
    name: "Your app name",
  });
  ```
</CodeGroup>

U moet uw `appsignal.cjs`-bestand vereisen (`--require ./appsignal.cjs`) bij het starten van uw applicatie. Bijvoorbeeld in het `package.json`-bestand van uw applicatie, zoals in onderstaand voorbeeld:

#### Javascript

<CodeGroup>
  ```json JSON theme={null}
  "scripts": {
    "server": "node --require ./appsignal.cjs index.js"
  }
  ```
</CodeGroup>

### AppSignal-client benaderen

In 3.x wordt de AppSignal-client benaderd vanuit het globaal geëxporteerde `Appsignal.client`-object. De onderstaande voorbeelden laten zien hoe u dit doet in de context van een [aangepaste metrics counter](/metrics/custom#counter).

#### 2.x

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

  const meter = appsignal.metrics();
  meter.incrementCounter("slow_queries", 1);
  ```
</CodeGroup>

#### 3.x

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

  const meter = Appsignal.client.metrics();
  meter.incrementCounter("slow_queries", 1);
  ```
</CodeGroup>

## Integraties

<Tip>
  Express en Next.js vereisen een [Error
  Handler](/nodejs/3.x/integrations/express#error-handler).
</Tip>

AppSignal voor Node.js 3.x ondersteunt alle 2.x-integraties standaard. Dit betekent dat de pakketten voor elke integratie niet langer geïnstalleerd hoeven te worden.

Bij het overstappen van 2.x naar 3.x moet u alle AppSignal-integratiepakketten die voor uw applicatie zijn geïnstalleerd, verwijderen.

### Integraties verwijderen

<Warning>
  De 2.x-integraties zijn niet compatibel met de 3.x Node.js-integratie. U moet
  de hieronder beschreven migratiestappen volgen om Node.js-integraties te
  gebruiken.
</Warning>

Om gebruik te maken van de standaardondersteuning voor integraties in AppSignal voor Node.js 3.x, moet u eerst de integratie-installaties die nodig waren in de 2.x-versie "ongedaan maken".

#### Code die afhankelijk is van het AppSignal-pakket verwijderen

<Tip>
  De onderstaande voorbeelden zijn ter illustratie en gebaseerd op de
  integratiedocumentatie van AppSignal 2.x en 3.x. De code in uw applicatie kan
  afwijken van de voorbeelden in deze documentatie.
</Tip>

* [Apollo Server](#remove-apollo-server-integration)
* [Express](#remove-express-integration)
* [Koa.js](#remove-koajs-integration)
* [Next.js](#remove-nextjs-integration)

**Vergeet niet om [het AppSignal-integratiepakket te verwijderen/deïnstalleren](#remove-integration-package)**.

### Apollo Server-integratie verwijderen

<Warning>
  Het 2.x `@appsignal/apollo-server`-pakket is niet compatibel met de 3.x
  Node.js-integratie. U moet de hieronder beschreven migratiestappen volgen als
  u Apollo Server met onze 3.x-integratie wilt gebruiken.
</Warning>

Verwijder de 2.x-initialisatie van het AppSignal Apollo Server-pakket en de plug-in uit uw applicatie, en vervang deze door de 3.x-installatie-instructies.

Uw Apollo-applicatie wordt automatisch geïnstrumenteerd.

#### 2.x

<CodeGroup>
  ```javascript Node.js theme={null}
  import { createApolloPlugin } from "@appsignal/apollo-server";
  import { ApolloServer, gql } from "apollo-server-express";
  // or: const { createApolloPlugin } = require("@appsignal/apollo-server");
  // or: const { ApolloServer, gql } = require("apollo-server-express");

  const server = new ApolloServer({
    /* ... */
    plugins: [createApolloPlugin(appsignal)],
  });
  ```
</CodeGroup>

#### 3.x

Apollo Server wordt automatisch geïnstrumenteerd door het AppSignal voor Node.js-pakket.

[Lees de documentatie van de 3.x GraphQL-integratie](/nodejs/3.x/integrations/graphql)

Zodra u uw integratiecode heeft aangepast, moet u [het Apollo AppSignal-pakket verwijderen](#remove-apollo-server-integration) uit uw applicatie.

### Express-integratie verwijderen

<Warning>
  Het 2.x `@appsignal/express`-pakket is niet compatibel met de 3.x
  Node.js-integratie. U moet de hieronder beschreven migratiestappen volgen als
  u express met onze 3.x-integratie wilt gebruiken.
</Warning>

Verwijder de 2.x-initialisatie van het AppSignal Express-pakket en de middleware uit uw applicatie, en vervang deze door de 3.x-installatie-instructies.

#### 2.x

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

  const {
    expressMiddleware,
    expressErrorHandler,
  } = require("@appsignal/express");
  // your app code goes here

  // add this after all other express middleware, but before any routes
  app.use(expressMiddleware(appsignal));

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

#### 3.x

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

  const app = express();
  // your app code goes here

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

[Lees de documentatie van de 3.x Express-integratie](/nodejs/3.x/integrations/express)

Zodra u uw integratiecode heeft aangepast, moet u [het AppSignal Express-pakket verwijderen](#remove-express-integration) uit uw applicatie.

### Koa.js-integratie verwijderen

<Warning>
  Het 2.x `@appsignal/koa`-pakket is niet compatibel met de 3.x
  Node.js-integratie. U moet de hieronder beschreven migratiestappen volgen als
  u Koa.js met onze 3.x-integratie wilt gebruiken.
</Warning>

Verwijder de 2.x-initialisatie van het AppSignal Koa-pakket en de instrumentatie uit uw applicatie.

#### 2.x

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

#### 3.x

Koa.js wordt automatisch geïnstrumenteerd door het AppSignal voor Node.js-pakket.

[Lees de documentatie van de 3.x Koa.js-integratie](/nodejs/3.x/integrations/koajs)

Zodra u uw integratiecode heeft aangepast, moet u [het Koa.js-pakket verwijderen](#remove-koajs-integration) uit uw applicatie.

### Next.js-integratie verwijderen

<Warning>
  Het 2.x `@appsignal/nextjs`-pakket is niet compatibel met de 3.x
  Node.js-integratie. U moet de hieronder beschreven migratiestappen volgen als
  u Next.js met onze 3.x-integratie wilt gebruiken.
</Warning>

De functie "Web Vitals Reporting" is afgeschaft en is niet langer beschikbaar in AppSignal voor Node.js 3.x.

#### 2.x

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

#### 3.x

Next.js wordt automatisch geïnstrumenteerd door het AppSignal voor Node.js-pakket.

[Lees de documentatie van de 3.x Next.js-integratie](/nodejs/3.x/integrations/nextjs)

### Integratiepakket verwijderen

Zodra de imports en de code die afhankelijk is van die imports zijn verwijderd, moet u het integratiepakket deïnstalleren.

Dit kan worden gedaan door `npm uninstall` uit te voeren, zoals in onderstaand voorbeeld.

```bash Bash theme={null}
npm uninstall @appsignal/express
```

De `npm uninstall`-commando's verwijderen pakketafhankelijkheden en werken de `package.json` van uw applicatie en het `package-lock.json`-bestand van npm bij.

Vervang `@appsignal/express` in bovenstaand voorbeeld door de naam van het integratiepakket dat u verwijdert.

#### Namen van AppSignal-integratiepakketten

| Integratie    | Pakketnaam                 |
| ------------- | -------------------------- |
| Apollo Server | `@appsignal/apollo-server` |
| Express       | `@appsignal/express`       |
| Koa.js        | `@appsignal/koa`           |
| Next.js       | `@appsignal/nextjs`        |

## Het Tracer-object

Er is geen aangepast AppSignal-tracer-object meer. OpenTelemetry stelt een tracer provider beschikbaar waarmee u nieuwe spans kunt aanmaken.

#### 2.x:

<CodeGroup>
  ```javascript Node.js theme={null}
  const tracer = appsignal.tracer();
  ```
</CodeGroup>

#### 3.x:

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

  const tracer = trace.getTracer("my-interesting-app");
  ```
</CodeGroup>

[Lees meer over tracers in de 3.x instrumentatiedocumentatie.](/nodejs/3.x/instrumentation/instrumentation)

## Spans

Er is geen aangepast AppSignal-span-object meer. AppSignal's tracer-functies, zoals `rootSpan()`, `createSpan()`, `currentSpan()` en `withSpan()`, zijn niet langer beschikbaar.

Spans moeten worden aangemaakt door de methode `startActiveSpan` aan te roepen op een tracer-object. Nieuwe spans zijn automatisch de children van de span waarin ze werden aangemaakt.

#### 2.x:

<CodeGroup>
  ```javascript Node.js theme={null}
  tracer.withSpan(tracer.createSpan(), async (span) => {
    span.setName("your span's name");
    // logic to trace here
  });
  ```
</CodeGroup>

#### 3.x:

<CodeGroup>
  ```javascript Node.js theme={null}
  tracer.startActiveSpan("your span's name", async (span) => {
    /// logic to trace here
    span.end();
  });
  ```
</CodeGroup>

[Lees meer over spans in de 3.x instrumentatiedocumentatie.](/nodejs/3.x/instrumentation/instrumentation)

### Helpers voor span-attributen

De helperfuncties die worden gebruikt om span-attributen in te stellen zijn ook gewijzigd.

`setSQL` is vervangen door `setBody`, `set` is hernoemd naar `setTag` en er zijn extra helperfuncties toegevoegd. `setName` is verwijderd, aangezien spans bij hun aanmaak een naam moeten krijgen.

#### 2.x

<CodeGroup>
  ```javascript Node.js theme={null}
  const span = tracer.currentSpan();

  span.setCategory("query.sql");
  span.setSQL("SELECT * FROM users");
  ```
</CodeGroup>

#### 3.x

<CodeGroup>
  ```javascript JavaScript theme={null}
  setCategory("query.sql");
  setSQL("SELECT * FROM users");
  ```
</CodeGroup>

[Lees meer over helpers voor span-attributen in de 3.x instrumentatiedocumentatie.](/nodejs/3.x/instrumentation/instrumentation#helpers)

## Exception Handling

Tracer- en span-objecten zijn niet langer nodig bij het gebruik van `setError()` en `sendError()`.

#### 2.x

<CodeGroup>
  ```javascript Node.js theme={null}
  tracer.setError(err);

  tracer.sendError(err, (span) => {
    span.setName("daily.task");
    span.set("user_id", user_id);
  });
  ```
</CodeGroup>

#### 3.x

In `sendError()` kunnen [helpers](/nodejs/3.x/instrumentation/instrumentation#helpers) worden gebruikt om aanvullende gegevens toe te voegen aan de error-span.

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

  setError(err);

  sendError(err, () => {
    setTag("user_id", user_id);
  });
  ```
</CodeGroup>

[Lees meer over exception handling in de 3.x documentatie over exception handling](/nodejs/3.x/instrumentation/exception-handling)
