citizen:/scripting/resource_init.lua:17: 'then' 附近出现意外符号

这是我为我的 FiveM 服务器编写的代码,当我尝试启动服务器时,出现错误,提示“citizen:/scripting/resource_init.lua:17: 'then' 附近出现意外符号”。请问有人能够帮助我吗?

return function(chunk)
    local addMetaData = AddMetaData

    setmetatable(_G end

        __index = function(t, k)
            local raw = rawget(t, k)
        end
            if raw then
                return raw


            return function(value)
                local newK = k

                if type(value) == 'table' then
                    -- 移除字符串末尾的's' (client_scripts, ...)
                    if k:sub(-1) ==  then
                        newK = k:sub(1, -2)


                    -- 给每个表项添加元数据
                    for _, v in ipairs(value) do
                        addMetaData(newK, v)
                    end
                else
                    addMetaData(k, value)
                end

                -- 兼容老版本
                return function(v2)
                    addMetaData(newK .. '_extra', json.encode(v2))
                end
            end
        end
    })

    -- 执行 chunk
    chunk()

    -- 重置元表
    setmetatable(_G, nil)
end
点赞
用户7396148
用户7396148

你的代码中有许多错误,然而在标题中的错误却不是运行代码时出现的错误。


第一个错误::4: ')' expected near 'end'

第四行是:

setmetatable(_G end

应该是

setmetatable(_G, {

这个错误非常模糊,因为这是一个相当奇怪的错误,我不确定为什么会有那个 end


第二个错误::9: '}' expected (to close '{' at line 4) near 'if'

第 8 行的 end 放错了位置,应该放在第 11 行。 因为第 8 行的 end 完成了第 6 行开始的函数定义,因此此错误期望出现 }


第三个错误::18: unexpected symbol near 'then'

第 18 行是:

if k:sub(-1) ==  then

应该是类似于

if k:sub(-1) == "s" then

需要 == 的第二个操作数。


第四个错误::36: 'end' expected (to close 'function' at line 6) near '}'

在第 32 行和第 33 行之间缺失了 end。 这个错误非常明显,值得指出的是,缩进出现问题可能会使找到缺失的 end 更困难。

2020-11-02 23:18:02