问题
当我在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。
答案 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}}是通用的,并且不是云功能特定的。