Ich habe eine Firebase Cloud-Funktion entwickelt, die mehrere Manipulationen an hochgeladenen Bildern verarbeitet. Mein Code basiert auf this documentation article und this Cloud Function example. Daher verwendet es Google Cloud Storage package.Firebase Storage- und Cloud-Funktionen - ECONNRESET
Es funktioniert gut fast die ganze Zeit, aber manchmal bin ich diesen Fehler beim Hochladen oder Lagerung zu löschen:
Error: read ECONNRESET
at exports._errnoException (util.js:1026:11)
at TLSWrap.onread (net.js:569:26)
ich die Standard-Eimer meiner Anwendung verwende, von event.data.bucket
verwiesen.
Lassen Sie mich wissen, wenn Sie zusätzliche Informationen oder Code-Schnipsel benötigen, auch wenn mein Code dem vorher verlinkten Funktionsbeispiel sehr ähnlich ist.
Ich habe this GitHub issue gefunden, aber ich habe überprüft, dass ich jedes Mal ein Versprechen zurückgebe. Zum Beispiel, hier ist das Löschen Teil, der den Fehler auslöst:
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);
});
}
...
Jede Chance, wir können sehen, was nach dem '...' passiert? – Nivco
Sie haben den gesamten Code, der einem Löschen von Miniaturansichten entspricht. Meine Funktion sollte bei 'return bucket.file (gcsThumbnailFilePath) .delete().' Part stehen bleiben. Ich bekomme die vorherige 'console.log ('Thumbnail-Löschung:' + gcsThumbnailFilePath);' im Firebase-Backend, aber nicht die Versprechung des Erfolgsabschlusses. – OlivierH
Ich sehe keine Gründe, warum ein ECONNRESET tatsächlich passieren würde. Kommt das häufig vor? – Nivco