Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

169
Vistas
OfficeJS: error de tamaño de pila de llamadas de rango máximo

Estoy usando OfficeJS en un complemento de Word y veo un comportamiento extraño con respecto a un error que aparece en la consola con el registro "Error de tamaño de pila de llamadas de rango máximo".

El siguiente código funciona para casi todos los documentos. Pero para documentos específicos, parece que file.getSliceAsync falla y provoca el error. Sin embargo, al realizar pruebas, algunos de nuestros desarrolladores pueden reproducir el error y otros no. Funciona el 100% del tiempo o el 0% del tiempo para un solo desarrollador.

Hemos intentado borrar cachés, pero sin éxito. No hay nada que sobresalga en los documentos que fallan aquí.

Parece que se trata de un error en la biblioteca de OfficeJS, pero no estoy seguro de que haya alguna solución.

¿Algunas ideas?

Código a continuación:

 static async getFileContent(): Promise<number[]> { console.log('Starting file content retrieval'); return new Promise((resolve, reject) => { return Office.context.document.getFileAsync( Office.FileType.Compressed, async (result) => { if (result.status === Office.AsyncResultStatus.Succeeded) { const file: Office.File = result.value; console.log('Slice count: ' + file.sliceCount); // Get all file slices const fileSlicePromises: Promise<number[]>[] = [ ...Array(file.sliceCount).keys(), ].map((counter) => WordDocumentService.getFileSlice(file, counter)); console.log('fileSlices length: ' + fileSlicePromises.length); // Combine file slices into a single file and then close the file const dataSlices: number[][] = await Promise.all(fileSlicePromises).finally( () => WordDocumentService.closeOfficeFile(file) ); console.log('Concatenating data'); return resolve([].concat(...dataSlices)); } else { return reject(`Failed to get file content: ${result?.error?.message}`); } } ); }); } static getFileSlice(file: Office.File, sliceIndex: number): Promise<number[]> { console.log('Getting file slice: ' + sliceIndex); return new Promise((resolve, reject) => { return file.getSliceAsync(sliceIndex, (result) => { if (result.status === Office.AsyncResultStatus.Succeeded) { return resolve(result.value.data); } else { return reject( `Failed to get file slice ${sliceIndex} from file: ${result?.error?.message}` ); } }); }); } static closeOfficeFile(file: Office.File): Promise<void> { console.log('Closing office file'); return new Promise((resolve, reject) => { return file.closeAsync((result) => { if (result.status === Office.AsyncResultStatus.Succeeded) { return resolve(); } else { return reject(`Failed to close file: ${result?.error?.message}`); } }); }); }
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda