AWS EC2 上的解析服务器在云代码上给出 141 错误

Posted

技术标签:

【中文标题】AWS EC2 上的解析服务器在云代码上给出 141 错误【英文标题】:Pasre server on AWS EC2 giving 141 error on cloud code 【发布时间】:2021-05-05 04:38:58 【问题描述】:

我现在使用以下云代码仅更新在 AWS EC2 实例上运行的解析服务器上的“下载”列。但我收到错误代码 141(无效函数)

Parse.Cloud.define("updateDownloads", async (request) => 
    const query = new Parse.Query(request.params.className);
    query.get(request.params.objectId)
    .then((watchFace) => 
        downloads = watchFace.get("downloads")
        watchFace.set("downloads", downloads + 1);
        await watchFace.save(null,  useMasterKey: true );
        return "download updated";
    , (error) => 
      return "something went wrong";
    );
  );

我已将我的代码放入/opt/bitnami/cloud/main.js。 我什至尝试在 config.json 文件中添加“cloud”: “/opt/bitnami/cloud/main.js”,但是解析服务器给出了 503 Service Unavailable 错误。所以我删除了它。

【问题讨论】:

没有这样的选项,但您可以尝试两种不同的方法:1) 将它们全部设为只读并创建一个云代码函数来使用 useMasterKey 选项写入此特定列 2) 使它们全部可写并且使用 beforeSave 触发器来验证是否仅更改了下载列。 嘿@DaviMacêdo,感谢您的帮助。但是我使用 AWS EC2 实例来托管我的解析服务器,并且我在 main.js 中添加了我的云功能,但现在我收到错误代码 141。对此有任何帮助吗? 您需要检查您的日志。您的 main.js 文件中可能有一些错误。此外,您需要确保正确初始化解析,将云代码指向此 main.js 文件。如果您分享您当前的代码,我可以尝试提供帮助。 @DaviMacêdo 请在上面找到代码。 【参考方案1】:

如果您不将云代码main.js 文件添加到解析服务器配置中,解析服务器将永远找不到您的函数,这就是您收到无效函数错误的原因。

如果添加文件时出现错误,要么是添加方式错误(需要检查解析服务器初始化代码),要么是 config.json 格式错误或云代码有问题。

最好的办法是检查你的日志。

乍一看,我看到的一个问题(可能还有其他问题)是在不是async 的函数中使用await。您还使用了asyncthen 的组合,这有点奇怪。

我建议您将代码更改为:

Parse.Cloud.define("updateDownloads", async (request) => 
    const query = new Parse.Query(request.params.className);
    const watchFace  = await query.get(request.params.objectId);
    const downloads = watchFace.get("downloads");
    watchFace.set("downloads", downloads + 1); // You can use inc function to avoid concurrency problem
    await watchFace.save(null,  useMasterKey: true );
    return "download updated";    
  );

【讨论】:

你是救世主。现在一切正常。我什至在 config.json 中添加了云路径,一切正常。 另外,为了让这个工作,我必须更新我的应用程序。你能告诉我如何实现 beforeSave 只需通过 +1 更新“下载”列。 我不确定我是否理解您的需求,但我建议您尝试一下,并在您无法弄清楚的情况下提出一个新问题。无论如何,我相信你可以使用增量函数(docs.parseplatform.org/js/guide/#counters)和 beforeSave 触发器(docs.parseplatform.org/cloudcode/guide/#beforesave)来实现你所需要的。 我想添加云代码以仅更新特定列并将其值增加 1。我已允许“更新”CLP,因此我想检查 beforeSave 仅增加“下载”列并且不能为安全性更改任何其他列值。 您可以比较 request.object 与 request.original 数据。

以上是关于AWS EC2 上的解析服务器在云代码上给出 141 错误的主要内容,如果未能解决你的问题,请参考以下文章

AWS ec2的ubuntu14.04上安装git服务

AWS 弹性 beanstalk ec2 服务器上的 node.js 命令

在 AWS 上解析仪表板并添加云代码

FCM 与 Prase-server 托管在 AWS EC2 上

如何在单个 AWS EC2 实例上的 Node 中部署多个微服务?

无法连接到端口 8080 上的 EC2 Windows 实例