Skip to content

Troubleshooting

If something’s broken, start by reading the FXServer console from the top — almost every Blixt failure surfaces a clear log line during boot.

The phone never opens (F1 / /phone does nothing)

Section titled “The phone never opens (F1 / /phone does nothing)”

Diagnose: look for the boot log lines.

[@blixt/database] Connected to database
[blixt] Loaded config.json
[blixt] Framework: <auto|qbox|qbcore|esx|standalone>

If any are missing, that’s where the failure is.

Missing lineLikely cause
[@blixt/database] Connected to databasemysql_connection_string is wrong or DB unreachable.
[@blixt/database] Ran N migrations (or “No pending”)Migration failed; read the error stack above.
[blixt] Loaded config.jsonconfig.json missing, malformed, or not at the resource root. The console will print [blixt] config.json parse error: <reason> if it’s malformed.
[blixt] Framework: ...oxmysql or another dependency didn’t start, so the resource never reached its bootstrap.

If all lines are present but the phone still won’t open, the issue is client-side. Open the F8 console in-game and look for:

  • RegisterCommand errors — duplicate /phone registration with another resource.
  • NUI load failures — the NUI bundle (dist/html/) wasn’t extracted with the resource.

”Stuck on Assigning…” / framework load race

Section titled “”Stuck on Assigning…” / framework load race”

Symptom: the phone opens but stays on a loading shell forever.

This is almost always a framework-detection race — the framework adapter booted before the framework’s resource finished loading. Two fixes:

  1. Pin the framework explicitly: set blixt:framework "qbox" (or whichever you run). Stops the auto-detect from racing.
  2. Re-order ensures: put your framework’s ensure line above ensure blixt in server.cfg so it’s fully loaded first.

The console prints the underlying parser error. The most common causes:

  • A trailing comma. JSON doesn’t allow them.
  • A // or /* comment. JSON doesn’t allow them either — use the _comment key trick (see Configuration).
  • Smart quotes pasted from a doc. Replace with regular " quotes.

After fixing, restart the resource — there is no hot reload.

Diagnose: take a photo in-game; look in the FXServer console for the upload error.

Common causes:

  • No storage configured. blixt:image_storage is "auto" and none of R2 / S3 / Fivemanage / Discord credentials are set. Pick one and set it. See Convars → Storage.
  • Wrong credentials. The error log includes the provider’s status code (e.g. S3 upload failed (403)). Check the access key has write permission on the configured bucket.
  • Pinned provider with missing credentials. If you set blixt:image_storage "r2" but R2 credentials are absent, uploads fail silently rather than falling back. Either provide the credentials or switch to "auto".
  • Make sure blixt-tablet is started — its dependencies { 'blixt' } declaration means it won’t start if blixt failed.
  • If you set tablet.toggleKey in config.json, FiveM only applies the default on the player’s first encounter. Players who joined before you added the key need to bind it under FiveM Settings → Key Bindings → Blixt → Toggle Tablet.

The Maps surface fetches tile JPEGs from a separate resource over cfx-nui-blixt-map-tiles/.... If that resource isn’t installed and started, every tile request 404s and the map area stays blank.

  • Confirm blixt-map-tiles is in resources/[blixt]/ (or wherever you keep Blixt) and that ensure blixt-map-tiles is in server.cfg.
  • Look in F8 (client) console: 404s against https://cfx-nui-blixt-map-tiles/assets/styleAtlas/<z>/<x>/<y>.jpg confirm the tiles resource isn’t reachable.
  • Restart with ensure blixt-map-tiles added — there’s no scripts to start, just static asset serving, so it loads near-instantly.

SyntaxError: Range out of order in character class on Blixt boot

Section titled “SyntaxError: Range out of order in character class on Blixt boot”

Symptom: blixt fails to load with a stack trace pointing at FileStreamRotator.getStream / DailyRotateFile, e.g.

Error loading script dist/game/server/server.js in resource blixt:
SyntaxError: Invalid regular expression: //opt/cfx-server/resources/[blixt-foo]/blixt/logs/...:
Range out of order in character class

Cause: Blixt’s logger constructs a regex from the absolute log file path. The path contains a bracket-wrapped category dir with a - between two letters (e.g. [blixt-foo]), which Node’s regex parser interprets as the character class [blixt-foo]. The t-f segment is an invalid character range (t > f) and the parser throws.

Fix: move Blixt out of any bracketed dir whose name contains a hyphen between letters. The convention resources/[blixt]/blixt/ is safe (single category, no hyphen-letter ranges). resources/[blixt-cfx]/ or resources/[blixt-phone]/ will crash. If unsure, drop the bracket folder altogether and put Blixt at resources/blixt/.

  • Check that blixt-business is in blixt:trusted_resources. Without it, Business cannot read or write through Blixt’s gated exports.
  • Check both resources started, in order: blixt before blixt-business.
  • The Business app needs a few seconds after server start to register — if you tested by joining immediately, refresh the home screen.

That’s intentional. Per character-not-account data, Blixt keys all persisted data on the character identifier for frameworks that support multi-character (qbox, qbcore). Your other character has its own phone, contacts, messages.

  • Bug or stuck install: post in the Blixt Discord with the FXServer console output around the failure. Server owners and the team both watch the support channels there.
  • Server-owner support: email the address on your Tebex receipt.