Referens för funktionshanteraren
Vad en Node.js-funktions hanterare tar emot och returnerar, de svar som plattformen ger i dess ställe, dess tidsgräns och dess miljö.
Den här sidan beskriver körmiljön Node.js, den som funktioner kan byggas för från portalen i dag — se Körmiljöer.
Hanteraren
Koden sparas som handler.js och laddas som en ES-modul på Node.js 22. Körmiljön anropar modulens
standardexport — eller, om den saknas, en export som heter handler, Handle eller run — med en
förfrågan och en kontext, och skickar tillbaka det som den returnerar:
export default async function (req, ctx) {
ctx.log(`${req.method} ${req.path}`);
const name = req.query.name ?? req.body?.name ?? "World";
return { status: 200, body: { message: `Hello, ${name}!` } };
}- Skriv JavaScript. Typannoteringar kompileras inte bort, så syntax som bara finns i TypeScript gör att funktionen misslyckas när den startar.
- Funktionen är en enda fil: bara Node.js inbyggda moduler kan importeras.
- En modul som inte har någon funktion att anropa gör att funktionen misslyckas när den startar.
Förfrågan
| Fält | Innehåll |
|---|---|
method |
HTTP-metoden, till exempel GET |
path |
Hela sökvägen, med rutten: /hello, eller /hello/orders/42 för en sökväg under rutten |
query |
Frågeparametrarna som strängar; för en parameter som anges flera gånger, det sista värdet |
headers |
Förfrågans huvuden, med namnen i gemener |
body |
Kroppen tolkad som JSON när Content-Type innehåller application/json; annars, och när kroppen inte är giltig JSON, kroppen som en sträng |
rawBody |
Kroppen som en UTF-8-sträng |
Utöver anroparens huvuden får funktionen X-Stackship-Function-Name,
X-Stackship-Trigger-Type och huvudena X-Forwarded-* från namnutrymmets proxy. En funktion med
autentisering påslagen får också anroparens identitet — se
Vem som anropar.
Kontexten
| Fält | Innehåll |
|---|---|
functionName |
Funktionens namn |
namespaceName |
Dess funktionsnamnutrymme |
triggerType |
http, eller timer för en schemalagd körning |
user |
Anspråken i anroparens token; sätts bara på en HTTP-funktion med autentisering påslagen |
log(message) |
Skriver en rad i funktionens logg, med funktionens namn först |
Svaret
Returnera ett objekt; alla fält är valfria:
| Fält | Standard | Betydelse |
|---|---|---|
status |
200 |
HTTP-statuskoden |
headers |
inga | Svarshuvuden. För att ersätta standardvärdena nedan, använd nyckeln Content-Type stavad exakt så: en nyckel som content-type skickas bredvid standardvärdet i stället för att ersätta det |
body |
tom | En sträng skickas som text/plain; allt annat skickas som JSON |
Returnerar hanteraren ingenting skickas 200 med en tom kropp. En Buffer skickas också som JSON,
så binära svar stöds inte.
Svar från plattformen
De här svaren kommer från körmiljön eller från namnutrymmets proxy, inte från din kod:
| Status | Kropp | När |
|---|---|---|
401 |
{"error": "…"} |
Funktionen har autentisering påslagen och token saknas eller godtas inte |
404 |
{"error": "No function found at this path.", "availableRoutes": […]} |
Ingen HTTP-funktions rutt matchar sökvägen |
405 |
{"error": "Method not allowed", …}, med huvudet Allow |
Funktionen tar inte emot metoden |
500 |
{"error": "Internal function error"} |
Hanteraren kastade ett fel; själva felet finns i funktionens logg |
503 |
{"error": "Function '<name>' is stopped.", "status": "stopped"} |
Funktionen stoppades via proxyns hanteringsgränssnitt — se Hur en förfrågan når en funktion |
504 |
{"error": "Function cold start timeout", …} |
En vilande funktion startade inte inom 30 sekunder |
504 |
{"error": "Function timed out", "timeoutSeconds": 300} |
Hanteraren körde längre än sin tidsgräns |
Tidsgräns
En hanterare har 300 sekunder på sig. Därefter får anroparen 504, men hanteraren stoppas inte:
den fortsätter att köra i bakgrunden. För att korta gränsen, sätt miljövariabeln
STACKSHIP_TIMEOUT_SECONDS på funktionen. Proxyn ger upp ett anrop när ingenting har gått mellan
den och funktionen på 310 sekunder. Körmiljön skickar svaret först när hanteraren returnerar, så en
gräns över ungefär 310 sekunder har ingen effekt.
Miljö
En funktion får namnutrymmets och sina egna miljövariabler, och dessa från plattformen:
| Variabel | Värde |
|---|---|
PORT |
8080 |
STACKSHIP_FUNCTION_NAME |
Funktionens namn |
STACKSHIP_FUNCTION_NAMESPACE |
Dess funktionsnamnutrymme |
STACKSHIP_TRIGGER_TYPE |
http eller timer |
STACKSHIP_ENTRYPOINT |
handler.js |
STSH_<NAME> |
En per hemlighetsreferens — se Läs värdena i din kod |
STACKSHIP_IDENTITY_RESOURCE_UID, STACKSHIP_IDENTITY_TOKEN_ENDPOINT, STACKSHIP_IDENTITY_POD_TOKEN_PATH |
Namnutrymmets managed identity — se Använd en managed identity i kod |
Timerkörningar
En timerfunktion anropas med en POST till / och en JSON-kropp som beskriver körningen;
ctx.triggerType är timer. Se Vad en körning tar emot.