Unexpected token < in JSON at position 0. Status code 500 in Nextjs 13 production build (App router)
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- nextjs, nodejs, typescript
Piste de recherche
Commencez par src/app/api/upload/route.ts et l’appel à upload_stream, puis reproduisez la requête avec next dev et avec next build && next start en utilisant les versions de package fournies. Comparez la réponse 500 en production avec le résultat en développement ; c’est terminé lorsque le même téléversement d’image réussit dans le build de production sans l’erreur d’analyse JSON.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Describe the bug in a sentence or two.
Unexpected token < in JSON at position 0. Status code 500 in Nextjs 13 production build (App router)
Issue Type (Can be multiple)
[ ] Build - Can’t install or import the SDK
[ ] Babel - Babel errors or cross browser issues
[ ] Performance - Performance issues
[X] Behaviour - Functions aren’t working as expected (Such as generate URL)
[ ] Documentation - Inconsistency between the docs and behaviour
[ ] Incorrect Types - For typescript users who are having problems with our d.ts files
[ ] Other (Specify)
Steps to reproduce
Create a route src/app/api/upload/route.ts and use the upload_stream method to upload any image
//src/app/api/upload/route.ts
import { NextRequest, NextResponse } from "next/server";
import { UploadApiResponse, v2 as cloudinary } from "cloudinary";
const cloud_name = process.env.NEXT_CLOUDINARY_CLOUDNAME;
const api_key = process.env.NEXT_CLOUDINARY_API_KEY;
const api_secret = process.env.NEXT_CLOUDINARY_API_SECRET;
cloudinary.config({
cloud_name,
api_key,
api_secret,
});
export async function POST(request: NextRequest) {
const data = await request.formData();
const image = data.get("file") as File;
const bytes = await image.arrayBuffer();
const buffer = Buffer.from(bytes);
const response = await new Promise<UploadApiResponse>((resolve, reject) => {
const stream = cloudinary.uploader.upload_stream({}, (err, res) => {
if (err) reject(err);
resolve(res!);
});
stream.write(buffer);
stream.end();
});
return NextResponse.json({
message: "File successfully uploaded",
url: response.secure_url,
id: response.public_id,
});
}
Run next dev command and send a request to http://localhost:3000/api/upload with the image. This works fine
Now, run next build && next start and send same request to the same url and server will throw an HTTP 500 error:
Error screenshots
Browsers (if issue relates to UI, else ignore)
[ ] Chrome
[ ] Firefox
[ ] Safari
[ ] Other (Specify)
[ ] All
Versions and Libraries (fill in the version numbers)
Cloudinary_NPM SDK version 1.41.0
Node - 18.15.0
NPM - 9.6.4
Config Files (Please paste the following files if possible)
// package.json
{
"name": "cloudinary-test",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"cloudinary": "^1.41.0",
"next": "13.5.4",
"react": "^18",
"react-dom": "^18"
},
"devDependencies": {
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"typescript": "^5"
}
}
Repository
- Langage dominant
- JavaScript
- Étoiles
- 672
- Forks
- 318
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Aucun guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de cloudinary/cloudinary_npm
-
Difficulté 2/5 1-3 heures Accessibilité débutants 45/100
cloudinary/cloudinary_npm#746 · 1 commentaire ·
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
cloudinary/cloudinary_npm#739 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 58/100
cloudinary/cloudinary_npm#734 ·
-
How to handle API KeysOuverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
cloudinary/cloudinary_npm#713 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 45/100
cloudinary/cloudinary_npm#712 · 1 commentaire ·
Toutes les issues de cloudinary/cloudinary_npm
Issues similaires
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
-
discovery:other factory-active task-identify-harness-labels-done task-identify-issue-type-done
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
vercel/ai#25068 · 4 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
needs-triage typo
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
llm-d-incubation/llm-d-scaling-manager#122 ·
Les mainteneurs répondent en général sous 1 jour
-
create-strapi-app doesn't await writing license.txt, so a failed write skips its error handlingOuverteflag: invalid template issue: bug severity: low source: cli status: pending reproduction version: 5
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
strapi/strapi#28637 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
Add a `CODE_OF_CONDUCT.md` fileOuvertemeta
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
matrix-org/matrix.org#3774 ·
Les mainteneurs répondent en général sous 1 jour