繁体   English   中英

带有google-translate-api的Firebase Cloud函数GET Request

[英]Firebase Cloud function GET Request with google-translate-api

我是Node Js的新手,他试图创建一个将fr转换为en的应用程序。 当我在本地节点服务或firebase服务中使用它时,我的代码可以正常工作,但是当我将其部署到Firebase Cloud功能时,它无法正常工作。

并且Firebase部署运行,但未按预期更新google API或未翻译该词,它显示“请稍候”,但未更新它。任何帮助将不胜感激。

Firebase日志-错误: getprocess.get上的getaddrinfo ENOTFOUND translate.google.com translate.google.com:443,位于/user_code/node_modules/google-translate-api/node_modules/google-translate-token/index.js:103:25,位于process._tickDomainCallback (内部/进程/next_tick.js:135:7)

 const functions = require('firebase-functions'); //in Firebase 

 const functions = require('firebase-functions');


const express = require('express');
var cors = require('cors')
const bodyParser = require('body-parser');
const app = express();
var translator = "Pls Wait";
const translate = require('google-translate-api');

app.use(bodyParser.json());

app.get('/api', function(req , res) {
   createTranslation();
   res.send(translator);
})


function createTranslation() {
     translate('Ik spreek Engels', {to: 'en'}).then(res => {
            console.log(res.text);
            translator = res.text;
            //=> I speak English
        // players = res.text;
            console.log(res.from.language.iso);
         //   return JSON.parse(res.body).data;;
            //=> nl
        }).catch(err => {
            console.log("ERROR");
            console.log(err);
            console.error(err);
        });
  }


var server = app.listen(function(){

    var host = server.address().address;
    var port = server.address().port;

    if(!host || host === "::"){
        host = "localhost:";
    }

    console.log('API running on http://%s%s', host , port);
});



 exports.app = functions.https.onRequest(app); //In Firebase

您无法使用Cloud Functions设置任意快递服务器。 这不起作用:

var server = app.listen(8081, function() { ... })

您必须通过文档中定义的触发器之一来处理输入。

另外,您不能只是在全局范围内开始调用方法并期望它们起作用:

translate(...).then(...).catch(...)

同样,您需要考虑运行代码以响应定义的触发器

您开始定义一个快速应用程序,该应用程序可能会作为HTTPS触发响应,但是它没有引起什么兴趣,只向客户端发送静态文本:

const app = express();
app.get('/api', cors(), function(req, res) {
    res.end(JSON.stringify(translator));
})
exports.app = functions.https.onRequest(app); //In Firebase

如果您想学习Cloud Functions,则应该从一个简单的示例开始并添加到其中,而不是尝试逐字移植一些现有的节点应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM