Skip to main content

Troubleshooting

Module not initialized

Make sure @quik/http-express is registered in your bootstrap module and appears after @quik/http. If hasFeature('IQHTTPEngine') is already true before this module's setup() runs (another engine registered first), @quik/http-express skips registering QExpressEngine entirely.

Session store dependency missing

Setting http.session.store to file or redis requires the matching peer dependency to be installed: session-file-store for file, connect-redis + ioredis for redis. Install the peer dependency, or call QExpressEngine.setSessionStore(...) with your own store instance instead of relying on the config-driven driver.

OpenAPI docs route missing

QDocumentationRoute is only registered in onAfterInit when both @quik/http and @quik/openapi are present in bootstrap and an IQHTTPEngine feature instance already exists. Confirm all three conditions, and that @quik/openapi is loaded before onAfterInit runs.

Cookies not scoped as expected

QExpressContext.setCookie/clearCookie apply httpOnly: true, secure: http.cookie.secure, and domain: http.cookie.domain as defaults. If cookies aren't being sent over HTTP in local development, check whether http.cookie.secure is true — the browser will silently drop Secure cookies on non-HTTPS origins.

SPA fallback swallows API requests

Confirm http.paths.api and http.paths.docs are set correctly — requests under those prefixes are excluded from the single-page-application fallback rewrite by design; everything else without a file extension is rewritten to http.static.singlePageApplication.indexFile.

Common Errors

@quik/http-express has no errors.* locale keys of its own — it raises the shared quik.errors.http.* errors from @quik/http (e.g. bad-request, unauthorized, forbidden, page-not-found, server-error) through the same response helpers used by any HTTP engine.