EADDRINUSE (port already in use)
What it means: the app tries to bind the same network port twice. Why it happens: two servers are started in the code, or a listener/app.listen(...) call gets created again inside an event handler (for example, on every request or every reconnect) instead of once at startup.
How to fix:
- Bind one webserver, once, listening on port
80. - Search your code for more than one
.listen()(Node) orrun()(Python/Flask/Django) call and remove the duplicate. - Make sure the listen call sits at the top level of your startup file, not inside a callback that can fire more than once.
Square Cloud dynamic apps must bind to host
0.0.0.0 and port 80. Binding to localhost/127.0.0.1 or any other port causes a site timeout instead.”Cannot find module” (Node.js) and ModuleNotFoundError (Python)
What it means: a package your code imports is missing from the dependencies file. Why it happens: the library isn’t listed inpackage.json’s dependencies (Node) or in requirements.txt/pyproject.toml (Python), so it never gets installed on the platform, even if it works on your machine.
How to fix:
- Add the missing package to the dependencies file with a valid version.
- Confirm the dependencies file itself is included in the
.zipyou uploaded. - Restart the application. For Node.js, a clean reinstall requires wiping
node_modulesfirst (delete it andpackage-lock.json, then restart) so the platform reinstalls from a clean state.
INVALID_DEPENDENCY
What it means: the deploy failed because an entry in your dependencies file doesn’t exist or points to an invalid/unavailable version. How to fix: openpackage.json / requirements.txt / pyproject.toml, fix the misspelled package name or version range for the flagged entry, and redeploy.
CONTAINER_TEMPORARILY_SUSPENDED
What it means: the container was suspended by the platform. Why it happens: this status is triggered by automatic resource-abuse protections, most commonly:- OOM (RAM): the app tried to exceed its configured
MEMORYand the process was killed. - CPU abuse: the app continuously exceeded its allocated CPU, so the process was suspended to protect the node.
- Request abuse: a safety cap on traffic to
.squareweb.appdomains or messaging APIs (Discord, Telegram, WhatsApp) was tripped, almost always by an infinite loop or a missing cache rather than real popularity.
KEEP_CALM
What it means: a snapshot-related action was requested too fast. Why it happens: either you (or an automation) requested a snapshot again before the platform’s short cooldown between snapshot requests elapsed, or the account’s daily snapshot limit for the current plan was reached. Note this is different fromDAILY_SNAPSHOTS_LIMIT_REACHED, which specifically flags that the plan’s daily quota is exhausted: KEEP_CALM can also fire on the shorter per-app cooldown between requests, independent of the daily count.
How to fix: wait a few minutes and try again. If the daily limit was hit, wait until the next day, or upgrade for a higher automatic-snapshot allowance.
better-sqlite3 / native bindings errors
What it means: an error likeCould not locate the bindings file when your app uses better-sqlite3 (directly, or through quick.db).
Why it happens: the installed better-sqlite3 version predates the platform’s current Node.js LTS, so its prebuilt native binding doesn’t match the runtime.
How to fix:
- Update
better-sqlite3to12.5.0or later (if you usequick.db, update it to9.1.7or later). - Delete
node_modulesandpackage-lock.json. - Restart the application for a clean reinstall that rebuilds the native bindings against the current runtime.
LACK_OF_RAM
What it means: the application exceeded its allocated RAM, or the kernel signaled an out-of-memory condition, and the process was terminated to protect host stability. How to fix:- Profile the app for memory leaks (Node.js:
--inspect, Python:memory_profiler). - Move in-memory caches to Redis or another external store instead of growing an in-process cache/Map forever.
- Increase the
MEMORYvalue allocated to your application in the control panel.

