Google云功能::无法使用'require'语句

时间:2018-02-06 22:20:29

标签: javascript require google-cloud-functions package.json

问题

当我在Google云端功能中包含任何“require”语句时,我会收到警告:“功能处于活动状态,但上次部署失败”

解决方案?

我很确定我需要在package.json文件中包含依赖项,但我不知道要包含哪些依赖项,或者如何编写它。

背景

我用Java构建了一个Android应用程序,我正在尝试集成条带支付。 Stripe要求我让服务器处理请求,但我正在尝试使用谷歌云功能(所以我不必支付/管理服务器)。

我正在尝试关注this示例,但它不起作用。作者没有包含package.json文件,我不确定要放在哪里的依赖项。我之前从未编写过java脚本,我的背景是python,c ++,java。

我查看了谷歌的this教程以及the google docs on writing cloud functions。我也搜索了S.O.并找不到解决方案。问题可能是我不是一个JavaScript开发人员。我正在尝试插入和播放其他人的代码,以使我的android(java)应用程序的一个特定部分工作。

疑难解答

要进行故障排除,我使用了谷歌提供的“helloWorld”示例。 Hello World功能可以自行查找。如果我在顶部添加这三个require语句中的任何一个,我会收到警告:“功能处于活动状态,但上次部署失败”

代码

- index.js

var app = require('express')();
var http = require('http').Server(app);
var stripe = require('stripe')(
  "your_stripe_key"
);
var bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

//initiate a one-off charge for a customer
exports.chargeCustomer = app.get(".../charge/:customerid/:token/:amount", function chargeCustomer (req,res){
  stripe.charges.create({
    customer: req.params.customerid,
    source: req.params.token,
    currency: 'usd',
    amount:req.params.amount
  },function(err, charge) {
    if(err) {
      return res.send(JSON.stringify(err));
    }
    res.send(JSON.stringify(charge));
  });
});

- package.json

{
  "name": "sample-http",
  "version": "0.0.1"
}

备注

如果你知道我做错了什么,请记住我从来没有写过javascript。我不认为我问了一个重复的问题,我已经搜索了,但它可能的答案是在另一个问题中,我只是不理解它,因为我从来没有写过javascript。

2 个答案:

答案 0 :(得分:2)

我写了你在上面的问题中引用的回购。问题是您没有正确格式化select * from AUDIT_TABLE where time >= add_months(trunc(sysdate), -12) + 19/24 and ( extract(hour from cast(time - 7/24 as timestamp)) >= 12 or time - 7/24 = trunc(time) ) ID TIME ---------- ------------------- 2 2017-02-12 19:00:00 3 2017-02-12 19:00:01 4 2017-02-13 06:59:59 5 2017-02-13 07:00:00 8 2018-02-11 19:00:00 9 2018-02-11 19:00:01 10 2018-02-11 23:59:59 11 2018-02-12 00:00:00 12 2018-02-12 00:00:01 13 2018-02-12 06:59:59 14 2018-02-12 07:00:00 文件。

部署功能时,您需要部署package.json文件和相应的index。您可以通过命令行进行部署,也可以只使用Cloud Functions产品中的Google内嵌编辑器进行部署。

package.json文件指定您的代码需要运行的依赖项。基本上,您的索引文件需要知道package.json的哪些第三方库的功能。您将在我的示例代码中注意到,下面包含require的一个小节点,该节点会告诉Google Cloud Functions使用您的代码安装哪些软件包。

您引用的特定"dependencies"文件正在通过Stripe创建费用。我在许多生产产品中使用了此代码的变体,index文件如下所示:

package.json

另外,为了让您知道,上述javascript的{ "name": "createCharge", "version": "1.0.0", "description": "create and charge in Stripe", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "Your Name", "license": "ISC", "dependencies": { "express": "^4.14.0", "stripe": "^4.4.0", "body-parser": "~1.13.3", "async": "^2.0.1", "promise": "^7.1.1" }, "engines": { "node": "4.1.1" }, "repository": { "type": "git", "url": "<path/to/your/repo.git>" } } 块不是必需的,因此如果您没有此特定功能的托管仓库,请随时删除它。

希望这有帮助!

答案 1 :(得分:0)

Here是一个{ "nyc": { "exclude": [ "build/src/apis", "build/test" ] }, "license": "Apache-2.0", "dependencies": { "google-auth-library": "^1.1.0", "qs": "^6.5.1", "string-template": "1.0.0", "uuid": "^3.1.0" }, ... } 的示例,它在this文档中提到过。我将通过其内容的一个例子:

npm.js

还考虑阅读package.json'documentation,因为{{1}}是通用的,并且不是云功能特定的。