Bad argument #1 to 'decode' (string expected, got nil)

Hi,

My server run on VRP. I receive the following error in the server console on my login script: SCRIPT ERROR: @vrp/_server/login.lua:86: bad argument #1 to ‘decode’ (string expected, got nil)

Any advice will be highly appreciated to remediate this issue.

The piece of code that create this error is:

                      vRP.users[user.source] = {id = tonumber(rows[1].id), username = rows[1].username, data = json.decode(data)}
                      vRPclient.logInPlayer(user.source)
                      TriggerEvent("vRP:playerLoggedIn",user.source, tonumber(rows[1].id), json.decode(data))

The complete code is:

RegisterServerEvent("vRP:playerLoggedIn")
Citizen.CreateThread(function()
  while true do
    Wait(128)
    local iterator = 0
    while iterator <= #vRP.requests do
      iterator = iterator + 1
      if iterator <= #vRP.requests then
        if not vRP.requests[iterator].passed then
          vRP.requests[iterator].passed = true
          local user = vRP.requests[iterator]
          if user.source ~= nil then
            vRP.MySQL.query("login", {username = user.username}, function(rows, affected)
              if #rows > 0 then
                if sha2.sha256(user.password) == rows[1].password then
                  if not rows[1].banned then
                    if not (config.whitelist and rows[1].whitelisted) or (not config.whitelist) then
                      TriggerClientEvent("vRP:playerLetIn",user.source)
                      local data = "[]"
                      if rows[1].data ~= "[]" then
                        data = rows[1].data
                      end
                      vRP.users[user.source] = {id = tonumber(rows[1].id), username = rows[1].username, data = json.decode(data)}
                      vRPclient.logInPlayer(user.source)
                      TriggerEvent("vRP:playerLoggedIn",user.source, tonumber(rows[1].id), json.decode(data))
                      Wait(256)
                      vRPclient.notify(user.source,{"Welcome on "..config.server_name.."!"})
                      print("vRP | "..user.username.." ( source = "..user.source.." ) logged in! ( user_id = "..rows[1].id.." )")
                    else
                      vRPclient.notify(user.source,{"You're not on the whitelist!"})
                      vRP.requests[iterator] = nil
                      print("vRP | "..user.username.." ( source = "..user.source.." ) refused! WHITELIST ON ( user_id = "..rows[1].id.." )")
                    end
                  else
                    vRPclient.notify(user.source,{"This account is blocked!"})
                    vRP.requests[iterator] = nil
                    print("vRP | "..user.username.." ( source = "..user.source.." ) refused! BANNED ( user_id = "..rows[1].id.." )")
                  end
                else
                  vRPclient.notify(user.source,{"Credentials are wrong!"})
                  vRP.requests[iterator] = nil
                end
              else
                vRPclient.notify(user.source,{"Credentials are wrong!"})
                vRP.requests[iterator] = nil
              end
            end)
          end
        end
      end
    end
  end
end)
1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.