Firebase Storage & Cloud Functions - ECONNRESET
Eu desenvolvi uma função Firebase Cloud que processa várias manipulações nas imagens carregadas. Meu código é baseado emeste artigo de documentação eeste exemplo da função de nuvem. Por isso, está usandoPacote do Google Cloud Storage.
Ele funciona bem quase o tempo todo, mas às vezes recebo esse erro ao fazer upload ou excluir do Storage:
Error: read ECONNRESET
at exports._errnoException (util.js:1026:11)
at TLSWrap.onread (net.js:569:26)
Estou usando o bucket padrão do meu aplicativo, referenciado porevent.data.bucket
.
Informe-me se você precisar de informações adicionais ou trechos de código, mesmo que meu código esteja realmente próximo do exemplo de Função que vinculei anteriormente.
eu encontreiesse problema do GitHub, mas verifiquei que estou retornando uma promessa sempre. Por exemplo, aqui está a parte da exclusão que aciona o erro:
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);
});
}
...