Known Limitations

Last updated

This page lists the current version's known issues in deployment, caching, and the API, with workarounds where they exist.

Deployment

Issue Impact Workaround
Dependencies are not locked, so a fresh install pulls @types/express 5.x and ts-node type-checking fails at GetFromPath.ts:55 with TS2339 (req.params.path is string | string[]) Starting through app.json with ts-node fails to compile and the service does not come up Install @types/express@^4, or set TS_NODE_TRANSPILE_ONLY=true
Nginx sends /upload/, /del/, and / to nodejs:3000 while NODE_PORT is 8080 Upload, delete, and health check return 502 through Nginx Align the proxy_pass ports with NODE_PORT; see Nginx
The app has no authentication Anyone who can reach the service can upload and delete Enable Nginx allow / deny

Caching

Issue Impact Workaround
On a cache hit, Content-Type follows the original extension, not the output format E.g. a.jpg?t=avif returns image/avif the first time, then AVIF bytes labelled image/jpeg Most browsers sniff the content and still render it; strict clients need a code fix
The 404 image is served with HTTP 200 The Cloudflare Worker rewrites it to max-age=604800 and caches it, so an image uploaded later at the same path still shows the 404 image at the edge Upload filenames are random, so requesting before uploading is rare; purge the Cloudflare cache when needed
Deleting an original purges no cache Converted variants stay available from cache/, Nginx, and Cloudflare Purge manually; see Caching Layers
Cache filenames use unnormalized parameters ?w=800 vs ?w=800&q=75, and ?w=9000 beyond the original size, each create their own cache file Use one fixed parameter style in the frontend
The local cache has no expiry or size cap storage/image/cache/ keeps growing Clean it periodically

API

Issue Impact
A successful delete message includes the absolute server path Exposes the deployment directory layout
Upload creates the folder before checking the type A rejected upload still leaves an empty folder
The trash keeps only the last segment and uses the UTC date Same-named files from different folders are told apart by _{timestamp}; record original paths yourself
The Worker accepts only .jpg/.jpeg/.png/.webp/.svg PDFs cannot be fetched through the Worker
Non-numeric (w=abc) or 0 parameters Return the 404 image instead of 400
中文