上传和部署错误
当 Square Cloud 拒绝一次上传时,控制面板、CLI 或 API 会返回这些代码。此时不会部署任何内容,请修复原因后重新上传。INVALID_DEPENDENCY
含义: 上传内容中没有其语言对应的依赖文件,或者该文件为空。Square Cloud 在安装任何内容之前,会检查该文件是否位于 zip 的根目录。 如何修复: 将依赖文件放在 zip 的根目录,与squarecloud.app 放在一起,并确保它不为空:package.json(Node.js、Bun、Deno)、requirements.txt 或 pyproject.toml(Python)、Cargo.toml(Rust)、Gemfile(Ruby)、go.mod 或 go.work(Go)或 mix.exs(Elixir)。然后重新上传。拼写错误的包名或版本会在之后以安装错误的形式出现在日志中。
KEEP_CALM
含义: 你或某个自动化流程重复某个操作(例如重启、上传或 snapshot)的速度太快。 如何修复: 稍等片刻后重试。被拒绝的操作只是没有执行:KEEP_CALM 永远不会停止或影响正在运行的应用。如果 snapshot 改为以 DAILY_SNAPSHOTS_LIMIT_REACHED 失败,说明你套餐当天的 snapshot 额度已用完,需要等到第二天。
网站无法加载
含义: 应用已经部署,但打开它的地址时显示的是以下页面之一,而不是你的网站:- “The website took too long to respond”:Square Cloud 找到了你的应用,但没有收到它的响应。
- “This site couldn’t be found”:该地址上没有发布任何网站。
-
让你的服务器监听
80端口和主机0.0.0.0。绑定到localhost、127.0.0.1或其他端口(3000、5173、8080 等)的服务器无法被访问。运行时已把PORT和HOST环境变量设置为这两个值,直接读取即可: - 打开日志:如果应用崩溃了,或者仍在安装依赖或构建,网站就还无法响应。请修复日志中显示的错误,或等待构建完成。
-
检查
MEMORY是否给构建留出了足够的空间:内存不足的框架构建会让应用以LACK_OF_RAM停止。
- 检查地址:它是
https://<SUBDOMAIN>.squareweb.app,其中的子域名来自你的配置文件。 - 如果刚刚部署,请等待最多一分钟,让地址完成发布。
- 没有设置
SUBDOMAIN就部署的应用不是网站,也无法变成网站:请设置SUBDOMAIN后把它作为新应用重新上传。 - 如果使用自定义域名,DNS 可能仍在传播中。参见为什么你的域名还没有生效。
EADDRINUSE(端口已被占用)
含义: 应用尝试将同一个网络端口绑定两次。 发生原因: 代码中启动了两个服务器,或者某个listen(...) 调用在事件处理程序内部被再次创建(例如每次请求或每次重新连接时),而不是只在启动时创建一次。
如何修复:
- 只启动一个 web 服务器,且只启动一次,监听端口
80和主机0.0.0.0。 - 在代码中查找是否有多个
.listen()(Node.js)或run()(Python/Flask/Django)调用,并删除多余的那个。 - 确保 listen 调用位于启动文件的顶层,而不是在可能多次触发的回调内部。
“Cannot find module”(Node.js)和 ModuleNotFoundError(Python)
含义: 代码中引入的某个包没有被安装。 发生原因:- 该库未列在
package.json的dependencies(Node.js)或requirements.txt/pyproject.toml(Python)中,因此即使在你本机可以运行,平台上也不会安装它。 - 在 Node.js 中,该包只列在
devDependencies中。应用以NODE_ENV=production运行,因此npm install会跳过开发依赖。
- 将缺失的包及有效版本号添加到
dependencies(或你的 Python 依赖文件)中。 - 确认依赖文件本身已包含在你上传的 zip 中。
- 重启应用。对于 Node.js,只有在
node_modules不存在时才会安装依赖:请在控制面板的文件管理器中删除node_modules(如果你上传过package-lock.json,也一并删除),然后重启,进行一次干净的重新安装。
better-sqlite3 / 原生绑定错误
含义: 当你的应用使用better-sqlite3(直接使用,或通过 quick.db)时出现类似 Could not locate the bindings file 的错误。
发生原因: 已安装的 better-sqlite3 版本早于平台当前的 Node.js LTS 版本,因此其预编译的原生绑定与运行时不匹配。
如何修复:
- 将
better-sqlite3更新到12.5.0或更高版本(如果你使用quick.db,请将其更新到9.1.7或更高版本)。 - 删除
node_modules和package-lock.json。 - 重启应用以进行干净的重新安装,从而针对当前运行时重新构建原生绑定。
因资源限制而停止
如果日志以[SQUARE-SHIELD] LACK_OF_RAM、LACK_OF_CPU 或 ABUSE_REQUESTS 结尾,或者启动应用时以 CONTAINER_TEMPORARILY_SUSPENDED 失败,说明 Square Cloud 因为应用超出资源而停止了它。状态表解释了每一种状态及其修复方法。
时间差了几个小时
应用以 UTC 时间运行。安排在 09:00 的任务会在 UTC 09:00 运行,代码打印到日志中的时间也是 UTC。请在代码中转换时间,或参阅帮助中心的如何更改应用的时区。相关指南
- 配置文件:每个字段及其可能引发的错误。
- 环境变量:设置密钥,然后重启使其生效。
- Discord 机器人错误和数据库连接错误。

