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 line | Likely cause |
|---|---|
[@blixt/database] Connected to database | mysql_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.json | config.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:
RegisterCommanderrors — duplicate/phoneregistration 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:
- Pin the framework explicitly:
set blixt:framework "qbox"(or whichever you run). Stops the auto-detect from racing. - Re-order ensures: put your framework’s
ensureline aboveensure blixtinserver.cfgso it’s fully loaded first.
config.json parse error
Section titled “config.json parse error”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_commentkey trick (see Configuration). - Smart quotes pasted from a doc. Replace with regular
"quotes.
After fixing, restart the resource — there is no hot reload.
Photos / voice memos won’t upload
Section titled “Photos / voice memos won’t upload”Diagnose: take a photo in-game; look in the FXServer console for the upload error.
Common causes:
- No storage configured.
blixt:image_storageis"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".
Tablet doesn’t open with /tablet
Section titled “Tablet doesn’t open with /tablet”- Make sure
blixt-tabletis started — itsdependencies { 'blixt' }declaration means it won’t start ifblixtfailed. - If you set
tablet.toggleKeyinconfig.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.
Maps app shows a blank canvas
Section titled “Maps app shows a blank canvas”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-tilesis inresources/[blixt]/(or wherever you keep Blixt) and thatensure blixt-map-tilesis inserver.cfg. - Look in F8 (client) console: 404s against
https://cfx-nui-blixt-map-tiles/assets/styleAtlas/<z>/<x>/<y>.jpgconfirm the tiles resource isn’t reachable. - Restart with
ensure blixt-map-tilesadded — 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 classCause: 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/.
Business app doesn’t show up
Section titled “Business app doesn’t show up”- Check that
blixt-businessis inblixt:trusted_resources. Without it, Business cannot read or write through Blixt’s gated exports. - Check both resources started, in order:
blixtbeforeblixt-business. - The Business app needs a few seconds after server start to register — if you tested by joining immediately, refresh the home screen.
”Data lost when I switched character”
Section titled “”Data lost when I switched character””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.
Where to ask
Section titled “Where to ask”- 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.