Mediawiki scribunto lua 模块不识别内建函数

我在使用 Scribunto 调用 Lua 内建函数时遇到问题。

我创建了一个基本的模块 Module:Item

local p = {};
function p.test(frame)
    print("Hello World!")
end
return p

我在不同页面中调用它 {{#invoke: Item | test}} 然后我收到以下错误:

Lua error in Module:Item at line 3: attempt to call global 'print' (a nil value).
Backtrace:
    1. (tail call): ?
    2. Module:Item:3: in function "chunk"
    3. mw.lua:511: ?
    4. (tail call): ?
    5. [C]: in function "xpcall"
    6. MWServer.lua:99: in function "handleCall"
    7. MWServer.lua:313: in function "dispatch"
    8. MWServer.lua:52: in function "execute"
    9. mw_main.lua:7: in main chunk
    10. [C]: ?

由于 print 是 Lua 内建函数,我觉得问题可能在设置上。 但是,当我导入维基 Infoboxes 时,它们可以正常工作。

版本:

Linux Mint Tara - 基于 ubuntu 18 的 Cinnamon 版本

MediaWiki 1.31.7

Scribunto (106fbf4) 17:24, 15 May 2018

Lua 5.1.5

非常感谢指出问题所在的帮助。

点赞
用户7509065
用户7509065

Scribunto 故意不包括 print它的手册中“已移除的函数和包”一节 对此有所说明:

在 wikitech-l 上有讨论,并决定应该用返回值代替,以提高代码质量。如果必要,可以使用 mw.log() 将信息输出到调试控制台。

2020-06-13 16:44:30