2017-10-04 36 views
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

+0

如果我用'label:'替換'label:「$ 48」'(即沒有生成任何東西),我會得到同樣的錯誤(在Linux上)。考慮到開始'$','$ 48'可能被解釋爲某處的變量名,併產生一個空字符串。不難通過暫時替換/刪除'$'來檢查。在這種情況下,解決方法是轉義$':'\ $'(也許)。 – xenoid

+0

嗨@xenoid - 我也收到純文本的錯誤。我只是將其中一個函數作爲示例 - 在編寫標籤時使用上述相同的代碼:「Nicole」我在雲功能環境中遇到同樣的錯誤。但我會嘗試所有相同的建議......不會傷害:)一旦功能部署完畢,我會在大約20分鐘內回覆您。 – JoeManFoo

+0

我不知道功能,所以我不能幫助更多。也許還要刪除所有下拉陰影生成,並檢查圖像確實是在第一階段生成的。 – xenoid

回答

1

我得到同樣的錯誤(在Linux )如果我用標籤替換標籤:「$ 48」:(即沒有生成任何東西)。考慮到開始的'$',有可能將$ 48解釋爲某處的變量名稱併產生一個空字符串。不難通過暫時替換/刪除$來檢查。在這種情況下,解決方案將是逃避$:\ $(也許)。

相關問題