错误类型
502 错误
当您尝试访问您的 URL 时,您可能会看到一条 502 错误,并显示消息 已注册的端点无法处理请求。这意味着请求失败,尽管我们的系统认为在请求开始时存在一个健康的容器。
这通常发生在您的后端在与我们的代理服务器通信时无法响应时。您可能需要分析您的应用程序以确定此错误的原因。查看 日志 选项卡,以获取有关此问题的更多信息。
503 错误
当您尝试访问您的 URL 时,您的应用程序可能会抛出一个 503 错误,并显示 服务不可用:没有健康的端点可以处理请求。这意味着目前没有可用的健康容器来为您的应用程序提供服务。
潜在的原因包括
- 所有容器都不健康,因为它们卡在 CPU 循环中。
- 没有容器正在运行,因为它们已停止或因为每个容器都崩溃了(尤其是在您的容器总数为 1 且您的应用程序没有时间重新启动的情况下)。
- 您的构建失败,如果这是您第一次为该应用程序部署容器,或者如果唯一其他可用的容器构建成功但都不健康。
503 错误的最常见原因是代码中的问题,导致部署失败 - 部署失败。查看 日志 选项卡,以获取有关此问题的更多信息。
您的应用程序在启动时崩溃的一个常见原因是您的 MONGO_URL 变量丢失或设置不正确。您可以通过转到应用程序的仪表板并选择设置选项卡来验证 Galaxy 正在使用的 MONGO_URL。要了解如何正确设置它,请查看以下资源
- 环境变量 将向您展示如何设置您的 settings.json 文件。
- 这篇 compose.io 文章 详细解释了 MONGO_URL 和 MONGO_OPLOG_URL 的设置。
如果您认为您的 MONGO_URL 设置正确,请尝试以下操作
- 检查应用程序仪表板并验证应用程序状态是否为绿色(健康)。
- 在终端中运行 dig +show [您的应用程序域名] 并验证其 CNAME 是否指向 Galaxy。您可以 在此处 了解如何设置 DNS。
- 如果您在美国地区,您的 CNAME 应指向 us-east-1.galaxy-ingress.meteor.com
- 如果您在欧盟地区,您的 CNAME 应指向 eu-west-1.galaxy-ingress.meteor.com
- 如果您在亚太地区,您的 CNAME 应指向 ap-southeast-2.galaxy-ingress.meteor.com
如果您最近更改了 DNS 设置,则可能需要等待新记录传播。DNS 更改通常在 30 分钟内传播(取决于为记录集配置的 TTL),但在某些情况下,可能需要长达 24 小时。如果您认为存在问题,请联系您的 DNS 提供商。
模块丢失或 npm 错误
这通常表示在您的应用程序中本地工作的模块或包在部署后无法工作。虽然我们不提供对使用特定第三方包的支持,但解释可能有助于您进行故障排除。
当您部署应用程序时,我们将 node_modules 捆绑到其中;客户端所需的 npm 包将构建到上传到 Galaxy 的捆绑包中。Galaxy 不需要为客户端捆绑工作运行 npm install。
请注意,动态 require 可能导致问题。例如,使用 require(variable) 而不是 require("fixed-name")。为避免这种情况,在您的应用程序代码中的某个位置放置 require("react/package.json") 以确保它被捆绑。
您可能会发现 meteor npm install --save package 命令很有用,其中 package 应替换为您尝试安装的包的名称。这会将包添加到您的 package.json 文件中,使用最新版本和任何必要的依赖项。
或者,您可以在您的 package.json 文件中直接指定包名称,以及版本号和任何必要的依赖项。
一种常见的 npm 错误将在构建过程中显示在日志的“全部”或“服务”选项卡中。如果您正在部署使用版本号 1.0.0 的示例包,它将显示如下
在 example@1.0.0 install 脚本 'prebuild --install' 处失败
这意味着此包使用该版本安装失败。长期解决方案可能涉及与包维护者或 Meteor 发布经理沟通以解决此问题。短期内,最佳的直接解决方案通常涉及更改版本 - 包版本或 Meteor 版本,如果构建在升级到新 Meteor 版本后突然开始失败。
如果您碰巧使用的是旧版本的 Meteor,请考虑更新到较新版本,因为这在过去已知可以解决问题。
如果您一直在使用 npm,请考虑改用 meteor npm,因为在前一种情况下您可能会遇到冲突。
如果以上两个解决方案均无效,请尝试完全删除该包并对您的应用程序进行必要的调整以适应此更改。
模拟 Galaxy 的推荐方法是在本地使用 --production 运行。 node_modules 的提取方式在远程部署到服务器(包括 Galaxy)上与在本地构建时不同。 --production 设置将最小化并将所有 JS 合并到一个文件中。
包不兼容
包含具有 NPM 依赖项(包括二进制组件)的本地包的应用程序默认情况下无法部署到 Galaxy。当您对 Galaxy 进行 meteor deploy 并失败显示 [package] 与架构 'os.linux.x86_64' 不兼容(其中 [package] 被导致问题的包名替换)时,您就知道遇到了此问题。
Meteor 1.2.1 版(及更高版本)为 Galaxy 部署提供了 METEOR_BINARY_DEP_WORKAROUND 环境变量。要使用解决方法将您的应用程序部署到 Galaxy
使用 meteor update 将您的应用程序升级到 Meteor 1.2.1 版或更高版本。
接下来,通过设置 METEOR_BINARY_DEP_WORKAROUND=t 环境变量来部署到 Galaxy。部署命令示例如下所示:METEOR_BINARY_DEP_WORKAROUND=t DEPLOY_HOSTNAME=galaxy.meteor.com meteor deploy ...,用其余部署命令(URL、设置等)替换 ...。
如果您不确定这是否与您的情况相符,您可以使用 此测试应用程序 来重现错误并确认修复。
更新于:2024/07/15
谢谢!