Firebase的云功能:产生ImageMagick语法

时间:2017-07-05 00:03:49

标签: node.js firebase firebase-storage google-cloud-functions

我希望使用imagemagick使用云功能将图像的高度和宽度上传到firebase存储。

我写了以下代码:

var child = spawn('identify', ["-ping","-format","`%w %h`",tempLocalFile]);
child.stdout.on('data', function(data) {
    console.log('stdout: ' + data);
    //Here is where the output goes
});
child.stderr.on('data', function(data) {
    console.log('stderr: ' + data);
    //Here is where the error output goes
});

但是firebase日志显示错误:

Cannot read property 'on' of undefined
at mkdirp.then.then (/user_code/index.js

请建议如何编写Imagemagick并获取执行的输出。

2 个答案:

答案 0 :(得分:0)

您的问题Cannot read property 'on' of undefined源于您添加stdoutstderr侦听器的方式。您必须获取进程并将侦听器添加到 ,而不是直接添加到spawn返回的承诺。代码段:

var spawnPromise = spawn('identify', ["-ping","-format","`%w %h`",tempLocalFile]);
var childProcess = spawnPromise.childProcess;
childProcess.stdout.on('data', function(data) {
    console.log('stdout: ' + data);
    //Here is where the output goes
});
childProcess.stderr.on('data', function(data) {
    console.log('stderr: ' + data);
    //Here is where the error output goes
});

答案 1 :(得分:0)

在将('child-proces-promise').spawn用作firebase thumbnail sample的情况下,您必须注意它返回了一个promise,并且可以使用childProcess属性访问子进程。

var promise = spawn('identify', ["-ping","-format","`%w %h`",tempLocalFile]);
var child = promise.childProcess;

child.stdout.on('data', function(data) { // do something });
child.stderr.on('data', function(data) { // do something });