Naar hoofdinhoud gaan
🛟 Aarzel niet om contact met ons op te nemen als u problemen ondervindt bij het upgraden van het AppSignal voor Node.js-pakket van uw applicatie. We helpen u graag verder!
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 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

npm install @appsignal/nodejs

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:
// appsignal.cjs

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

const appsignal = new Appsignal({
  active: true,
  name: "Your app name",
});
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

"scripts": {
  "server": "node --require ./appsignal.cjs index.js"
}

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.

2.x

import { appsignal } from "./appsignal";
// or: const appsignal = new Appsignal({...});

const meter = appsignal.metrics();
meter.incrementCounter("slow_queries", 1);

3.x

import { Appsignal } from "@appsignal/nodejs";
// or: const { Appsignal } = require("@appsignal/nodejs");

const meter = Appsignal.client.metrics();
meter.incrementCounter("slow_queries", 1);

Integraties

Express en Next.js vereisen een Error Handler.
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

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

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.
Vergeet niet om het AppSignal-integratiepakket te verwijderen/deïnstalleren.

Apollo Server-integratie verwijderen

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

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)],
});

3.x

Apollo Server wordt automatisch geïnstrumenteerd door het AppSignal voor Node.js-pakket. Lees de documentatie van de 3.x GraphQL-integratie Zodra u uw integratiecode heeft aangepast, moet u het Apollo AppSignal-pakket verwijderen uit uw applicatie.

Express-integratie verwijderen

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

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));

3.x

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());
Lees de documentatie van de 3.x Express-integratie Zodra u uw integratiecode heeft aangepast, moet u het AppSignal Express-pakket verwijderen uit uw applicatie.

Koa.js-integratie verwijderen

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.
Verwijder de 2.x-initialisatie van het AppSignal Koa-pakket en de instrumentatie uit uw applicatie.

2.x

import appsignalKoa from "@appsignal/koa";
// or: const appsignalKoa = require("@appsignal/koa");
appsignal.instrument(appsignalKoa);

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 Zodra u uw integratiecode heeft aangepast, moet u het Koa.js-pakket verwijderen uit uw applicatie.

Next.js-integratie verwijderen

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.
De functie “Web Vitals Reporting” is afgeschaft en is niet langer beschikbaar in AppSignal voor Node.js 3.x.

2.x

import { getRequestHandler } from "@appsignal/nextjs";
// or: const { getRequestHandler } = require("@appsignal/nextjs");

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

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

IntegratiePakketnaam
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:

const tracer = appsignal.tracer();

3.x:

import { trace } from "@opentelemetry/api";
// or: const { trace } = require("@opentelemetry/api");

const tracer = trace.getTracer("my-interesting-app");
Lees meer over tracers in de 3.x instrumentatiedocumentatie.

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:

tracer.withSpan(tracer.createSpan(), async (span) => {
  span.setName("your span's name");
  // logic to trace here
});

3.x:

tracer.startActiveSpan("your span's name", async (span) => {
  /// logic to trace here
  span.end();
});
Lees meer over spans in de 3.x instrumentatiedocumentatie.

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

const span = tracer.currentSpan();

span.setCategory("query.sql");
span.setSQL("SELECT * FROM users");

3.x

setCategory("query.sql");
setSQL("SELECT * FROM users");
Lees meer over helpers voor span-attributen in de 3.x instrumentatiedocumentatie.

Exception Handling

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

2.x

tracer.setError(err);

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

3.x

In sendError() kunnen helpers worden gebruikt om aanvullende gegevens toe te voegen aan de error-span.
import { setError, sendError } from "@appsignal/nodejs";
// or: const { setError, sendError } = require("@appsignal/nodejs");

setError(err);

sendError(err, () => {
  setTag("user_id", user_id);
});
Lees meer over exception handling in de 3.x documentatie over exception handling