gpt4 book ai didi

MediaWiki 上的 Lua 错误

转载 作者:行者123 更新时间:2023-12-04 07:23:21 25 4
gpt4 key购买 nike

我正在尝试设置 MediaWiki,并尝试使用 Navbox 模板。我在本地机器上一切正常,但是当我将它们全部复制到服务器时,我得到 Lua 脚本错误,特别是:

Lua error at line 302: attempt to call field 'attr' (a nil value).
Backtrace:
(tail call): ?
Module:Navbox:302: in function "renderMainTable"
Module:Navbox:348: in function "renderMainTable"
(tail call): ?
mw.lua:425: ?
(tail call): ?
[C]: in function "xpcall"
MWServer.lua:73: in function "handleCall"
MWServer.lua:266: in function "dispatch"
MWServer.lua:33: in function "execute"
mw_main.lua:7: in main chunk
[C]: ?

如果我编辑该文件,那么它只会为所有其他字段提供错误。

我的服务器正在运行 MediaWiki 1.20,如果这有什么不同的话。我尝试过使用 Scribunto 1.20、1.21 和 master(对引擎进行更改以适应 1.20)。

如果有人可以提供帮助,那就太好了。

编辑模块: Navbox , HtmlBuilder .

最佳答案

看得很,非常与维基百科的代码相比,仔细查看您的粘贴代码。事实上,我建议执行两者的差异。

Your code

metatable._index = function(t, key)
local ret = rawget(t, key)
if ret then
return ret
end

ret = metatable[key]
if type(ret) == 'function' then
return function(...)
return ret(t, ...)
end
else
return ret
end
end

Wikipedia
metatable.__index = function(t, key)
local ret = rawget(t, key)
if ret then
return ret
end

ret = metatable[key]
if type(ret) == 'function' then
return function(...)
return ret(t, ...)
end
else
return ret
end
end

你看得到差别吗? Metamethods in Lua总是以两个下划线开头 __ , 不是一个。我不确定您的代码是如何达到它所处的状态的,但这可以很好地解释您遇到的所有麻烦,甚至为什么 attr无法访问。这是由于元表的 __index 缺少下划线的字段,这当然意味着它根本不会被识别。我很惊讶我注意到了,因为在略读时很容易错过额外的下划线。

我建议恢复您的 HtmlBuilder首先将模块恢复到原始状态,然后查看是否可以解决您的问题。您可能想要恢复 NavBox以及您可能已修改的任何其他内容,如果您的修改不是太重要,而是 diff绝对告诉你你的版本之间有什么不同。

请注意您将来会更改什么,但只要您有备份,就不要害怕尝试!

关于MediaWiki 上的 Lua 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19901919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com