All this Script Module does is return the table that has a Metatable in it

-- Variables
local module = {}
local xp_lvl_DataStore = game:GetService('DataStoreService'):GetDataStore('xp/lvlStore')

-- Events
function module.XpLvlTable()
	local xpLvlModuleTable = {}
	local lvlControl = {
		__call = function(xpToAdd,key,xpLvlTable)
			-- Gets current lvl and xp
			local curLvl = xpLvlTable[2]
			local newXp = xpLvlTable[1] + xpToAdd
			-- Checks if you lvled up
			if curLvl ==  0 and newXp >= 10 then
				print('FIRST LVL UP')
				local newXp = newXp - 10
				-- Checks if can lvl up again
				for i = curLvl,350 do
					if i == 350 then
						table.remove(xpLvlTable,1)
						table.insert(xpLvlTable,1,0)
						table.remove(xpLvlTable,2)
						table.insert(xpLvlTable,2,350)
					elseif newXp - (10*i) < 0 then
						-- Sets xp + lvl in the table then saves
						table.remove(xpLvlTable,1)
						table.insert(xpLvlTable,1,newXp)
						table.remove(xpLvlTable,2)
						table.insert(xpLvlTable,2,i)
						xp_lvl_DataStore:SetAsync(key,xpLvlTable)
						break
					else
						newXp = newXp - (10*i)
					end
				end
			elseif curLvl == 350 then
				print('MAX LVL')
				-- Sets xp + lvl in xpLvlTable then saves
				table.remove(xpLvlTable,1)
				table.insert(xpLvlTable,1,0)
				xp_lvl_DataStore:SetAsync(key,xpLvlTable)
			elseif newXp >= 10*curLvl then
				print('LVL UP')
				-- Gets current lvl and xp
				local curLvl = xpLvlTable[2]
				local newXp = xpLvlTable[1] + xpToAdd
				-- Checks if you lvled up
				local newXp = newXp - 10*curLvl
				-- Checks if can lvl up again
				for i = curLvl,350 do
					if i == 350 then
						table.remove(xpLvlTable,1)
						table.insert(xpLvlTable,1,0)
						table.remove(xpLvlTable,2)
						table.insert(xpLvlTable,2,350)
					elseif newXp - (10*i) < 0 then
						-- Sets xp + lvl in the xpLvlTable then saves
						table.remove(xpLvlTable,1)
						table.insert(xpLvlTable,1,newXp)
						table.remove(xpLvlTable,2)
						table.insert(xpLvlTable,2,i)
						xp_lvl_DataStore:SetAsync(key,xpLvlTable)
						break
					else
						newXp = newXp - (10*i)
					end
				end
			else
				print('NO LVL')
				-- Sets xp then saves
				table.remove(xpLvlTable,1)
				table.insert(xpLvlTable,1,newXp)
				xp_lvl_DataStore:SetAsync(key,xpLvlTable)
			end
		end
	}
	table.insert(xpLvlModuleTable,1,lvlControl)
	return xpLvlModuleTable
end

return module

This is the Script that gets the error in line 21 "attempt to call local "xpLvlModuleTable" (a table value)"

-- Variables
local xp_lvl_DataStore = game:GetService('DataStoreService'):GetDataStore('xp/lvlStore')
local repStorage = game:GetService('ReplicatedStorage')
local serverScriptStore = game:GetService('ServerScriptService')
local xpChanger = repStorage:WaitForChild('Xp_LvlChanged')
local xpToAdd = 5
local part = script.Parent
local maxLvl = 350
local xp_LvlModule = require (serverScriptStore.Xp_LvlModule)

-- Events
local success,message = pcall (part.ClickDetector.MouseClick:Connect(function(plr)
	-- Variables
	local xpLvlModuleTable = xp_LvlModule.XpLvlTable()
	local key = 'Player-'..plr.UserId
	local xpLvlTable = xp_lvl_DataStore:GetAsync(key)
	-- Fire to player
	xpChanger:FireClient(plr,xpToAdd)
	-- Gets table to save
	print(xp_LvlModule.XpLvlTable())
	xpLvlModuleTable(xpToAdd,key,xpLvlTable)
	print('Xp: '..xpLvlTable[1]..' Lvl: '..xpLvlTable[2])
end))