0
鉴于此代码: ```运行convert命令将返回错误,我无法重现本地
let exec = require('child-process-promise').exec
let magickCommand = `convert -background none -stroke "rgba(139, 184, 232, 1)" -fill "rgba(136, 183, 232, 0.83)" -font /tmp/1057522377634683-priceFont.ttf -pointsize 70 label:"$48" -trim (+clone -background "rgba(135, 138, 140, 0.59)" -shadow 80x8+8+10) +swap -background none -layers merge +repage -rotate 0 -fuzz 10% -trim /tmp/1057522377634683-priceText.png`
exec(magickCommand).then(() => { console.log('finished') })
``` 我可以用convert
匹配的版本,我的Windows机器上运行是谷歌云-功能:ImageMagick的-6.8.9-9-Q16-x64的静态
,当我在我的功能得到下面的错误运行相同的ImageMagick的命令: ```
{ ChildProcessError: Command failed: convert -background none -stroke "rgba(139, 184, 232, 1)" -fill "rgba(136, 183, 232, 0.83)" -font /tmp/1057522377634683-priceFont.ttf -pointsize 90 label:"$48" -trim \(-clone -background "rgba(135, 138, 140, 0.59)" -shadow 80x8+8+10 \) +swap -background none -layers merge +repage -rotate 0 -fuzz 10% -trim /tmp/1057522377634683-priceText.png
convert: image sequence is required `-clone' @ error/convert.c/ConvertImageCommand/967.
`convert -background none -stroke "rgba(139, 184, 232, 1)" -fill "rgba(136, 183, 232, 0.83)" -font /tmp/1057522377634683-priceFont.ttf -pointsize 90 label:"$48" -trim \(-clone -background "rgba(135, 138, 140, 0.59)" -shadow 80x8+8+10 \) +swap -background none -layers merge +repage -rotate 0 -fuzz 10% -trim /tmp/1057522377634683-priceText.png` (exited with error code 1)
at callback (/user_code/node_modules/child-process-promise/lib/index.js:33:27)
at ChildProcess.exithandler (child_process.js:211:5)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Socket.<anonymous> (internal/child_process.js:342:11)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at Pipe._handle.close [as _onclose] (net.js:497:12)
name: 'ChildProcessError',
code: 1,
childProcess:
{ ChildProcess: { [Function: ChildProcess] super_: [Object] },
fork: [Function],
_forkChild: [Function],
exec: [Function],
execFile: [Function],
spawn: [Function],
spawnSync: [Function: spawnSync],
execFileSync: [Function: execFileSync],
execSync: [Function: execSync] },
stdout: '',
stderr: 'convert: image sequence is required `-clone\' @ error/convert.c/ConvertImageCommand/967.\n' }
``` 我试过命令有和没有('在函数环境中,但无论如何命令exec仍然失败。随着功能部署需要15到20分钟 - 调试这是非常缓慢,我在我的智慧结束。我希望有人在过去遇到过这样的事情,并能以我的方式看到错误。
节点版本本地和谷歌云-功能是6.11.2
当我运行命令在本地我产生一个透明的PNG文件 Google Drive folder with font and output .png file
如果我用'label:'替换'label:“$ 48”'(即没有生成任何东西),我会得到同样的错误(在Linux上)。考虑到开始'$','$ 48'可能被解释为某处的变量名,并产生一个空字符串。不难通过暂时替换/删除'$'来检查。在这种情况下,解决方法是转义$':'\ $'(也许)。 – xenoid
嗨@xenoid - 我也收到纯文本的错误。我只是将其中一个函数作为示例 - 在编写标签时使用上述相同的代码:“Nicole”我在云功能环境中遇到同样的错误。但我会尝试所有相同的建议......不会伤害:)一旦功能部署完毕,我会在大约20分钟内回复您。 – JoeManFoo
我不知道功能,所以我不能帮助更多。也许还要删除所有下拉阴影生成,并检查图像确实是在第一阶段生成的。 – xenoid