Lua加载json模块报错求助:安装luajson后运行代码出现版本调用错误
问题原因与解决办法
这个错误是因为你安装的luajson 1.3.4版本过于老旧,不兼容Debian 12默认的Lua 5.4版本。luajson 1.3.4的代码中错误地将Lua内置的_VERSION(字符串类型,比如"Lua 5.4")当作函数调用,导致出现attempt to call field 'version' (a string value)的报错。
解决方式
方式一:换用兼容高版本Lua的JSON库(推荐)
dkjson是轻量且兼容Lua 5.1到5.4的JSON库,安装和使用都很简单:
- 安装dkjson:
luarocks install dkjson
- 修改测试代码
test.lua:
local json = require("dkjson") print("hello")
方式二:修改luajson的代码(不推荐)
如果坚持使用luajson,可以手动修改报错文件/usr/local/share/lua/5.1/json/decode/util.lua第97行:
找到类似以下的代码:
local v = _VERSION()
替换为解析版本字符串的代码:
local v = _VERSION:match("Lua (%d+%.%d+)")
这种方式需要修改系统安装的库文件,后续更新luajson时会被覆盖,因此不推荐。
内容的提问来源于stack exchange,提问作者chris01
相关产品推荐
相关产品推荐

