【发布时间】:2013-11-22 23:49:55
【问题描述】:
我正在尝试设置 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。
【问题讨论】:
-
在第 302 行包含代码会很有帮助。
-
代码全部取自维基百科模块,实际抛出错误的函数是: function renderMainTable() local tbl = HtmlBuilder.create('table') .attr('cellspacing', 0 ) .addClass('nowraplinks') .addClass(args.bodyclass) 但是,如果我修改代码以跳过该行,则模块的其余部分会引发相同的错误。 en.wikipedia.org/wiki/Module:Navbox
-
attr是 nil,从我通过阅读 Wikipedia 文档可以看出,这意味着HtmlBuilder.create('table')调用正在返回一个没有该字段的 Lua 表,这只能意味着它没有设置构建器元表。您能否提供更多信息或代码(如果已修改)? -
代码直接从维基百科导入 - HtmlBuilder 代码在这里:en.wikipedia.org/wiki/Module:HtmlBuilder
-
Navbox HtmlBuilder 谢谢。
标签: lua mediawiki mediawiki-templates scribunto