如何在Firebase函数中转义字符?

时间:2018-01-21 20:25:41

标签: javascript

我正在创建Firebase功能,以便在存储中上传图片并从中创建圆形缩略图。一切都有效,但实际的ImageMagick命令。

我收到错误: enter image description here

代码:

return new Promise((resolve, reject) => {
        exec(`convert ${tempLocalFile} -resize x300 -resize 300x< -gravity center -crop ${THUMB_MAX_HEIGHT}x${THUMB_MAX_WIDTH}+0+0 +repage \( +clone -threshold -1 -negate -fill white -draw "circle 150,150 150,0" \) -alpha off -compose copy_opacity -composite -auto-orient ${tempLocalThumbFile}`, { stdio: 'ignore' }, (err, stdout) => {
          if (err) {
            console.error('Error conveting image to thumbnail.', err);
            reject(err);
          } else {
            resolve(stdout);
          }
        });
      });

我假设这是由括号是一个需要转义的特殊字符引起的。如何在命令中转义括号?我第一次尝试没有括号前面的\,但是它导致了同样的错误。

1 个答案:

答案 0 :(得分:0)

这并不是Firebase真正具体的,但是因为你的命令会生成一个单括号,而不是\(,这是what's required by ImageMagick

要解决此问题,请更改

... +repage \( +clone -threshold -1 -negate -fill white -draw "circle 150,150 150,0" \) ...

... +repage \\( +clone -threshold -1 -negate -fill white -draw "circle 150,150 150,0" \\) ...

应生成正确的字符串。基本上需要做的是你需要打印出反斜杠\,但由于那是转义字符,那就是需要转义的字符,所以命令应该使用{ {1}}而不是。