MediaWiki上的Lua错误
我正在尝试设置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) 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无法访问.这是由于metatable的 我建议先将HtmlBuilder模块恢复到原始状态,然后查看是否能解决问题.您可能想要恢复NavBox以及您可能已修改的任何其他内容,如果您的修改不是太重要,但diff肯定会告诉您版本之间有什么不同. 请注意你未来的变化,但只要你有备份就不要害怕尝试! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |