Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Firebase云函数中使用Google Vision API时出现类型错误_Javascript_Node.js_Firebase_Google Cloud Functions_Google Cloud Vision - Fatal编程技术网

Javascript 在Firebase云函数中使用Google Vision API时出现类型错误

Javascript 在Firebase云函数中使用Google Vision API时出现类型错误,javascript,node.js,firebase,google-cloud-functions,google-cloud-vision,Javascript,Node.js,Firebase,Google Cloud Functions,Google Cloud Vision,我正在尝试获取一个示例,以便在Firebase云函数中使用Google Vision API,但失败了 我正在使用Github上提供的未修改的示例: 编辑: 这是我的源文件: /** *版权所有2016谷歌公司。保留所有权利。 * *根据Apache许可证2.0版(以下简称“许可证”)获得许可; *除非遵守许可证,否则不得使用此文件。 *您可以通过以下方式获得许可证副本: * * http://www.apache.org/licenses/LICENSE-2.0 * *除非适用法律

我正在尝试获取一个示例,以便在Firebase云函数中使用Google Vision API,但失败了

我正在使用Github上提供的未修改的示例:

编辑:

这是我的源文件:

/**
*版权所有2016谷歌公司。保留所有权利。
*
*根据Apache许可证2.0版(以下简称“许可证”)获得许可;
*除非遵守许可证,否则不得使用此文件。
*您可以通过以下方式获得许可证副本:
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
*除非适用法律要求或书面同意,软件
*根据许可证进行的分发是按“原样”进行分发的,
*无任何明示或暗示的保证或条件。
*请参阅许可证,了解管理权限和权限的特定语言
*许可证下的限制。
*/
"严格使用",;
const functions=require('firebase-functions');
const mkdirp=require('mkdirp-promise');
const gcs=require('@googlecloud/storage')();
const vision=require('@googlecloud/vision')();
const spawn=require('child-process-promise')。spawn;
const path=require('path');
const os=要求('os');
常数fs=要求('fs');
/**
*上传图像时,我们会检查云端视觉是否将其标记为成人或暴力
*API,如果是,我们使用ImageMagick模糊它。
*/
exports.blurOffensiveImages=functions.storage.object().onChange(事件=>{
const object=event.data;
const file=gcs.bucket(object.bucket).file(object.name);
//如果这是移动或删除事件,请退出。
如果(object.resourceState==='不存在'){
返回console.log('这是一个删除事件');
}
//使用Cloud Vision API检查图像内容。
返回vision.detectSafeSearch(文件).then(数据=>{
const safeSearch=数据[0];
console.log('图像上的SafeSearch结果',SafeSearch);
如果(安全搜索。成人| |安全搜索。暴力){
返回blurImage(object.name、object.bucket、object.metadata);
}
});
});
/**
*使用ImageMagick模糊位于给定存储桶中的给定图像。
*/
函数图像(文件路径、bucketName、元数据){
const templacalfile=path.join(os.tmpdir(),filePath);
const templacaldir=path.dirname(templacalfile);
const bucket=gcs.bucket(bucketName);
//创建要下载存储文件的临时目录。
返回mkdirp(templacaldir)。然后(()=>{
log('已创建临时目录',tempLocalDir);
//从bucket下载文件。
返回bucket.file(filePath).download({目的地:tempocalfile});
}).然后(()=>{
log('文件已下载到',tempLocalFile);
//使用ImageMagick模糊图像。
返回spawn('convert',[templacalfile',-channel','RGBA','-blur','0x8',templacalfile]);
}).然后(()=>{
log('在创建模糊图像',tempLocalFile);
//上传模糊图像。
返回bucket.upload(模板文件{
目标:文件路径,
元数据:{metadata:metadata}//保留自定义元数据。
});
}).然后(()=>{
console.log('模糊图像上载到存储在',文件路径);
fs.unlinkSync(templacalfile);
log('Deleted local file',filePath);
});

}
在FCF中使用云视觉时,我也遇到了一些麻烦。我的工作解决方案如下所示:

const vision = require('@google-cloud/vision');
const visionClient =  new vision.ImageAnnotatorClient();
然后你应该能够做一些很酷的事情,比如:

visionClient.labelDetection(someImageUri)

问题是您使用的vision API版本比示例代码使用的版本要新。示例代码提供了以下依赖项:

"@google-cloud/storage": "^0.4.0",
"@google-cloud/vision": "^0.5.0",
"child-process-promise": "^2.2.0",
"firebase-admin": "^4.1.1",
"firebase-functions": "^0.5.1",
"mkdirp": "^0.5.1",
"mkdirp-promise": "^4.0.0"
您正在使用更新的内容:

"@google-cloud/storage": "^1.5.2",
"@google-cloud/vision": "^0.14.0",
"child-process-promise": "^2.2.1",
"firebase-admin": "^5.8.1",
"firebase-functions": "^0.8.1",
"mkdirp": "^0.5.1",
"mkdirp-promise": "^5.0.1"

所以,你有两个选择。退回依赖项版本以匹配示例代码正在使用的内容,或者更改示例以适合您想要使用的版本。

您是否可以编辑您的问题以显示导致您看到的错误的整个最小文件(而不仅仅是一行)?当然@DougStevenson,我现在已经包含了我的整个源文件。我是StackOverflow的新手,我认为到GitHub的链接就足够了,因为我没有修改原始文件;-)谢谢@JeffD23,我明天会试试这个,并告诉你结果谢谢,这就是解决方案!谢谢你的澄清,道格!现在我知道了,问题出在哪里;-)