Moonscript在OSX上使用Lua 5.3启动时出现CLI错误。

我正在运行最新版本的X Code的Mac OS X 10.11.1。我今天从源代码安装了Lua 5.3而没有出现任何问题。它似乎可以正常工作。安装luarocks没有出现错误,然后使用它来安装moonscript也没有出现错误。但是,当从命令行调用moon或moonc时,都会出现以下错误:

$ moon
/usr/local/bin/lua: /usr/local/share/lua/5.3/alt_getopt.lua:24: attempt to call a nil value (global 'module')
stack traceback:
    /usr/local/share/lua/5.3/alt_getopt.lua:24: in main chunk
    [C]: in function 'require'
    /usr/local/lib/luarocks/rocks/moonscript/0.4.0-1/bin/moon:2: in main chunk
    [C]: in ?

查看alt_getopt.lua,可以看到它确实使用了已经过时的'module'关键字。这个模块的GitHub项目似乎已经死亡,三年没有任何动作。

我该怎么做才能使Moonscript在我的系统上工作?

点赞
用户1442917
用户1442917

是的,正如您所指出的,module 已经被废弃了一段时间,之前仅由于兼容性开关而与早期版本兼容。

您可以在 alt-getopt 中将第 24 行注释掉,并将以下行添加到 alt-getopt.lua 文件的末尾:return {get_opts = get_opts, get_ordered_opts = get_ordered_opts}

这应该使此模块与 Lua 5.2/5.3 兼容(我还没有检查使用 Lua 5.3 是否存在任何其他兼容性问题)。

2015-12-14 05:15:04