所以这是我的问题,我们正在开发一个移动应用程序,所以5个月前,当我们开始时,我们使用Parse作为我们的后端解决方案。现在Parse会在几个月内死掉但幸运的是,我们仍然可以通过包含他们的API来使用Parse服务器。但是在移植我们的数据库(暗示过程中有很多愤怒和绝望:p)在mongo上并在AWS上托管服务器之后,我再也无法执行我的云代码了。找不到我定义的功能,并且Parse仪表板不再可用,我无法检查我的云功能是否部署在服务器上。有人可以帮助我并告诉我我做错了什么吗?你们知道另一种检查云功能的方法吗? 这是我的index.js:
var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var math = require('mathjs');
var databaseUri = process.env.DATABASE_URI || process.env.MONGOLAB_URI
var app = express();
Parse.initialize('XXXXXXX', 'XXXXXX');
if (!databaseUri) {
console.log('DATABASE_URI not specified, falling back to localhost.');
}
var api = new ParseServer({
databaseURI: databaseUri || 'XXXXXX',
cloud: './cloud/main.js',
appId: process.env.APP_ID || 'XXXXXX',
masterKey: process.env.MASTER_KEY || 'XXXXXX',
serverURL: 'http://parseserver-4w2hk-env.elasticbeanstalk.com/'
});
var mountPath = process.env.PARSE_MOUNT || '/parse';
app.use(mountPath, api);
app.get('/', function(request, response) {
Parse.Cloud.run('hello');
});
和我的main.js(云功能):
Parse.Cloud.define('hello', function(req, res) {
Parse.Cloud.httpRequest({
url: 'http://www.parse.com/',
success: function(httpResponse) {
response(httpResponse.text);
},
error: function(httpResponse) {
response('Request failed with response code ' + httpResponse.status)
}
});
});
这是日志行,它显示云功能的404错误:
[21 / Feb / 2016:16:58:56 +0000]“POST / functions / hello HTTP / 1.1”404 29“ - ”“node-XMLHttpRequest,Parse / js1.7.1(NodeJS 4.2.3)”
提前致谢! :)
答案 0 :(得分:3)
您应该可以使用HTTP请求调用该函数。
您是否尝试过示例云代码:
Parse.Cloud.define('hello', function(req, res) {
res.success('Hello world!');
});
请注意,默认的装载路径为' / parse'而不是' / 1'与parse.com服务一样。
使用curl
进行测试:
curl -X POST -H "X-Parse-Application-Id: XXX" -H "X-Parse-REST-API-Key: XXX" http://<your server>/parse/functions/hello
答案 1 :(得分:2)
使用cloud:__ dirname +'/ cloud / main.js', 而不是云:'。/ cloud / main.js',
答案 2 :(得分:0)
所以我有更多的信息:当我在我的serverurl / parse / functions / hello上执行curl POST命令时,它可以工作,但它给了我“Hello World”作为响应,这意味着我的文件main.js从未上传过云代码。我确信它与我的ParseServer配置有关,但我不知道是什么......也许是因为replicaSet,可能还有另一种方法可以做到。
答案 3 :(得分:0)
是的,我不知道为什么,当我改变我们的开发环境并继续生产时,云功能被神奇地执行了,所以我克隆了env,现在它正在工作,我的云功能被正确调用。啊啊代码的奇迹.. 无论如何,谢谢你们,感谢Ilya花了一些时间:)
答案 4 :(得分:0)
对于托管解析服务器,每次向/cloud/main.js添加新的云功能时都必须重新启动服务器
问候