Ich schreibe eine Funktion, wo ich Firebase den Code bin nach aus dem Beispielcode in Github provided by Firebase Allerdings habe ich konsequent bin immer den Fehler Function returned undefined, expected Promise or value
in meiner Firebase Funktionen protokollieren.Firebase: Funktion zurückgegeben undefiniert, erwartete Versprechen oder Wert
Ich habe so ziemlich meinen Code geändert, um genau das gleiche und doch keine Atempause zu sein. Hat jemand diesen Code ausprobiert? Ist es fehlerfrei? Warum erhalte ich den Fehler? Denselben Code ist auch in der Firebase guide
Beispielcode den Fehler produziert unter
exports.imageToJPG = functions.storage.object().onChange(event => {
const object = event.data;
const filePath = object.name;
const baseFileName = path.basename(filePath, path.extname(filePath));
const fileDir = path.dirname(filePath);
const JPEGFilePath = path.normalize(path.format({dir: fileDir, name: baseFileName, ext: JPEG_EXTENSION}));
const tempLocalFile = path.join(os.tmpdir(), filePath);
const tempLocalDir = path.dirname(tempLocalFile);
const tempLocalJPEGFile = path.join(os.tmpdir(), JPEGFilePath);
// Exit if this is triggered on a file that is not an image.
if (!object.contentType.startsWith('image/')) {
console.log('This is not an image.');
return;
}
// Exit if the image is already a JPEG.
if (object.contentType.startsWith('image/jpeg')) {
console.log('Already a JPEG.');
return;
}
// Exit if this is a move or deletion event.
if (object.resourceState === 'not_exists') {
console.log('This is a deletion event.');
return;
}
const bucket = gcs.bucket(object.bucket);
// Create the temp directory where the storage file will be downloaded.
return mkdirp(tempLocalDir).then(() => {
// Download file from bucket.
return bucket.file(filePath).download({destination: tempLocalFile});
}).then(() => {
console.log('The file has been downloaded to',
tempLocalFile);
// Convert the image to JPEG using ImageMagick.
return spawn('convert', [tempLocalFile, tempLocalJPEGFile]);
}).then(() => {
console.log('JPEG image created at', tempLocalJPEGFile);
// Uploading the JPEG image.
return bucket.upload(tempLocalJPEGFile, {destination: JPEGFilePath});
}).then(() => {
console.log('JPEG image uploaded to Storage at', JPEGFilePath);
// Once the image has been converted delete the local files to free up disk space.
fs.unlinkSync(tempLocalJPEGFile);
fs.unlinkSync(tempLocalFile);
});
});
Alle Zeiger?
"Fragen, die Debugging-Hilfe suchen (" Warum funktioniert dieser Code nicht? ") Müssen das gewünschte Verhalten, ein spezifisches Problem oder einen Fehler und den kürzesten Code enthalten, um es in der Frage selbst zu reproduzieren sind für andere Leser nicht nützlich. Siehe: So erstellen Sie ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve). " –
Der Beispielcode und die Dokumentation wurden noch nicht aktualisiert, um eine kürzlich erfolgte Änderung im SDK widerzuspiegeln. Siehe diese Frage: https://Stackoverflow.com/q/47128440/4815718, und insbesondere Franks Kommentar dort. –
@BobSnyder - danke Bob, dein Kommentar war sehr hilfreich. Ich habe es geschafft, die Antwort auf die Frage zu finden. Und du warst dran. Schätzen Sie den Zeiger –