TypeError when Downloading to PDF in Azure App Service: undici failure

Ouverte
#1,990 6 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
25/100
Type d'issue
Bug
Clarté
À clarifier
Activité
À l'abandon
Stack technique
azure, node.js, typescript
Domaine
api, backend, cloud

Piste de recherche

Start with conversionDownloadToPdf and the @microsoft/microsoft-graph-client request using ResponseType.RAW, then compare the local and Azure App Service environments on Node v18.19.1. Inspect the full undici error cause and determine whether ProxyAgent or an officially documented workaround addresses the failure; done means the PDF download works in Azure or the limitation is clearly documented.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Download to PDF Not Working in Azure App Service

I'm running an express app using Node v18.19.1. My endpoint does the following:

  1. Saves a document to a sharepoint folder
  2. Performs the download/convert to pdf
  3. Saves the downloaded pdf to a Mongo db.
  4. Deletes the original file

Steps 1, 2, and 4 use the @microsoft/microsoft-graph-client@3.0.7 package. This all works locally. However, when I deploy it to my Azure App Services (running Windows and Node v18.19.1), it breaks at step 2 with the following error:

TypeError: fetch failed at node:internal/deps/undici/undici:12625:11
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

The conversion download method:

const conversionDownloadToPdf = async (fileItemId) => {
    try {
        console.log(chalk.blue(`Attempting to downloaded file (${fileItemId})...`));

        const response = await client.api(`drives/${process.env.DRIVE_ID}/items/${fileItemId}/content?format=pdf`)
            .responseType(ResponseType.RAW) // ensure raw stream
            .get();

        const stream = await apiRequest.responseType(ResponseType.RAW).get(); // BREAKS HERE

        console.log(chalk.blue(`Stream downloaded. Streaming to buffer...`));
      
        return await toBuffer(stream);
    } catch (error) {
        console.error(chalk.red(`Full error details:`));
        console.error(chalk.red(`Message: ${error.message}`));
        console.error(chalk.red(`Status Code: ${error.statusCode}`));
        console.error(chalk.red(`Code: ${error.code}`));
        console.error(chalk.red(`Stack: ${error.stack}`));
        
        // Log the cause if available (undici errors have this)
        if (error.cause)
            console.error(chalk.red(`Cause: ${JSON.stringify(error.cause, null, 2)}`));

        throw error;
    }
}

Do I need to use that ProxyAgent? Do you have official docs on a workaround?

Langage dominant
TypeScript
Étoiles
833
Forks
240
Métriques de merge des PR
Aucune PR mergée en 30 j

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de microsoftgraph/msgraph-sdk-javascript

Toutes les issues de microsoftgraph/msgraph-sdk-javascript

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.