调整图像大小并上传到服务器返回错误代码

这是我的代码:

var dimensionsArray = [] dimensionsArray.push(new cardSet("L", 1000, 500, 200, 100)) dimensionsArray.push(new cardSet("M", 500, 200, 100, 50)) dimensionsArray.push(new cardSet("S", 200, 100, 50, 20)) function cardSet(name, dimSetWidth, dimSetHeight, dimPreviewWidth, dimPreviewHeight){ this.name = name this.dimSetWidth = dimSetWidth this.dimSetHeight = dimSetHeight this.dimPreviewWidth = dimPreviewWidth this.dimPreviewHeight = dimPreviewHeight } function insertBeforeLastOccurrence(strToSearch, strToFind, strToInsert) { var n = strToSearch.lastIndexOf(strToFind); if (n < 0) return strToSearch; return strToSearch.substring(0,n) + strToInsert + strToSearch.substring(n); } exports.resizeCardSet = functions.storage.object().onChange(event => { let file = event.data var filePath = event.data.name if (file.resourceState === 'not_exists') { return; } if(!filePath.startsWith('admin/')) { return; } const fileBucket = event.data.bucket const bucket = gcs.bucket(fileBucket); const fileName = filePath.split('/').pop() const tempFilePath = [] const dimensions = [] const promisesDownloads = [] var q = 0 while (q < dimensionsArray.length){ let downloadTo = insertBeforeLastOccurrence(`/tmp/${fileName}`, ".png", dimensionsArray[q].name) dimensions.push(downloadTo) console.log(downloadTo) promisesDownloads.push(bucket.file(filePath).download({ destination: dimensions[q] })) q += 1 } console.log("1") return Promise.all([promisesDownloads]).then(() => { console.log("2") var promises = [] var downloadDestinations = [] if (filePath.startsWith('admin/generatenewcardset/')) { filePath = filePath.substring(25) var setNumber = filePath.match(/\d/g); setNumber = setNumber.join(""); let nameFile = filePath.replace(/[0-9]/g, ''); filePath = 'deckcards/' + setNumber + '/' + nameFile if (filePath.indexOf('Set') > -1) { var q = 0 while (q < dimensionsArray.length){ let downloadTo = 'deckcards/' + setNumber + '/' + nameFile + dimensionsArray[q].name downloadDestinations.push(downloadTo) promises.push(spawn('convert', [dimensions[q], '-resize', dimensionsArray[q].dimSetHeight + 'x' + dimensionsArray[q].dimSetWidth + '>', dimensions[q]])) q += 1 } }else{ return } } else{ return } console.log("3") return Promise.all([promises]).then(() => { console.log("4") var promisesB = [] var i = 0 console.log(promises[0]) for (file in dimensions){ console.log('Thumbnails created at', dimensions[i]) promisesB.push(bucket.upload(dimensions[i], { destination: downloadDestinations[i] })) i += 1 } return Promise.all([promisesB]).then(() => { let file = bucket.file(event.data.name) return file.delete() }) }) }) }) 

我想要在admin / generatenewcardset中上传1张图片,并且该图片应该存储在另外一张地图里面的3张不同的图片中。

只有我可以在该地图上载图像,图像始终以数字开头,然后在此示例中设置(如此:1Set,2Set …)。 我想存储在deckcards / {numberofset} / Set {dimension},所以它可能是:deckcards / 2 / SetM

现在,当我尝试上传图片时,这是输出:

在这里输入图像描述

这是完整的错误:

 ChildProcessError: `convert /tmp/1SetL.png -resize 500x1000> /tmp/1SetL.png` failed with code 1 at ChildProcess.<anonymous> (/user_code/node_modules/child-process-promise/lib/index.js:132:23) at emitTwo (events.js:106:13) at ChildProcess.emit (events.js:191:7) at maybeClose (internal/child_process.js:877:16) at Socket.<anonymous> (internal/child_process.js:334:11) at emitOne (events.js:96:13) at Socket.emit (events.js:188:7) at Pipe._handle.close [as _onclose] (net.js:498:12) 

谢谢!