报错/usr/lib/lua/luci/controller/admin/behave_audit.lua:90: attempt to call method 'remove' (a nil value)
时间: 2023-07-05 15:35:20 浏览: 165
在 Lua 中,当调用一个方法时,如果该对象为 `nil`,就会出现类似“attempt to call method 'remove' (a nil value)”这样的错误。根据错误提示,可以看到是在第 90 行代码中调用了一个 `remove` 方法,但是该方法是一个 `nil` 值,也就是说该方法不存在或者被定义为 `nil`。
根据我们之前的代码修改,可以看出是在 `section` 对象上调用了 `remove` 方法,但是该对象并没有定义 `remove` 方法。因此,我们需要将 `section` 对象转换为 UCI `cursor` 对象,然后在 UCI `cursor` 对象上调用 `delete` 方法来删除 `log_send_enable` 配置项。修改后的代码如下所示:
```lua
function get_behave_audit_info(filter, uciname, secname, para)
dbg("get_behave_audit_info")
local uci_r = uci.cursor()
local result = {}
uci_r:foreach("behave_audit", "behave_audit",
function(section)
section["log_send"] = section["log_send_enable"]
uci_r:delete("behave_audit", section[".name"], "log_send_enable")
result[#result + 1] = section
end
)
return err.ENONE, result
end
```
修改后的代码将 `section` 对象的 `remove` 方法改为了 UCI `cursor` 对象的 `delete` 方法,同时传递了 `behave_audit`、`section[".name"]` 和 `log_send_enable` 三个参数来指定要删除的配置项。
阅读全文