Almacenamiento Firebase y funciones en la nube - ECONNRESET
Desarrollé una función Firebase Cloud que procesa varias manipulaciones en las imágenes cargadas. Mi código se basa eneste artículo de documentación yeste ejemplo de función en la nube. Por lo tanto, está utilizandoPaquete de Google Cloud Storage.
Funciona bien casi todo el tiempo, pero a veces recibo este error al cargar o eliminar de Storage:
Error: read ECONNRESET
at exports._errnoException (util.js:1026:11)
at TLSWrap.onread (net.js:569:26)
Estoy usando el depósito predeterminado de mi aplicación, al que hace referenciaevent.data.bucket
.
Avíseme si necesita información adicional o fragmentos de código, incluso si mi código está realmente cerca del ejemplo de Función que vinculé antes.
encontréeste problema de GitHub, pero comprobé que siempre estoy devolviendo una promesa. Por ejemplo, aquí está la parte de eliminación que desencadena el error:
index.js
exports.exampleFunction = functions.storage.object().onChange(event => {
return f_thumbnails.exampleFunction(event);
});
example_function.js
module.exports = exports = function (_admin, _config) {
admin = _admin;
config = _config;
return {
"exampleFunction": function (event) {
return exampleFunction(event);
}
};
};
const exampleFunction = function (event) {
const gcsSourceFilePath = event.data.name;
const gcsSourceFilePathSplit = gcsSourceFilePath.split('/');
const gcsBaseFolder = gcsSourceFilePathSplit.length > 0 ? gcsSourceFilePathSplit[0] : '';
const gcsSourceFileName = gcsSourceFilePathSplit.pop();
const gceSourceFileDir = gcsSourceFilePathSplit.join('/') + (gcsSourceFilePathSplit.length > 0 ? '/' : '');
// Not an image
if (!event.data.contentType.startsWith('image/')) {
console.log('Not an image !');
return;
}
// Thumbnail
if (gcsSourceFileName.startsWith(config.IMAGES_THUMBNAIL_PREFIX)) {
console.log('Thumbnail !');
return;
}
const bucket = gcs.bucket(event.data.bucket);
const gcsThumbnailFilePath = gceSourceFileDir + config.IMAGES_THUMBNAIL_PREFIX + gcsSourceFileName;
// File deletion
if (event.data.resourceState === 'not_exists') {
console.log('Thumbnail deletion : ' + gcsThumbnailFilePath);
return bucket.file(gcsThumbnailFilePath).delete().then(() => {
console.log('Deleted thumbnail ' + gcsThumbnailFilePath);
});
}
...