如何在 Lua 中加载模块时避免循环。

我有一个需要使用两个模块的情况...两个模块都加载/引用另一个模块。因此我收到有关循环的错误。

这是 module1 中的代码:

require("posix")
posix.setenv("PATH", "/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin")

而在 module2 中我也有同样的内容:

require("posix")
local ts = posix.stat(spath, "ctime")

我找到了这篇文章:Lua:如何避免循环引用

我尝试应用上述文章所说的,我在两个模块中改变了逻辑以看起来像这样:

posix = posix 或 require("posix")

但是我仍然得到错误消息。任何建议将不胜感激。

编辑1

tester.lua

local main = require("main")

main.lua

module (..., package.seeall)
-- 加载库
require("commonfunctions")
require("luasql.postgres")
require("session")

commonfunctions.lua

posix = posix 或 require "posix"

session.lua

posix = posix 或 require "posix"

错误信息

``` lua:/usr/share/acf/lib//session.lua:15:循环或先前错误加载模块“posix” 堆栈回溯: [C]:在函数“require”中 /usr/share/lib//session.lua:15:在主块中 [C]:在函数“require”中 /usr/share/myapp/main.lua:10:在主块中 [C]:在函数“require”中 /usr/share/lua/5.1/posix.lua:2:在主块中 [C]:在函数“require”中 /usr/share/acf/lib//commonfunctions.lua:4:在主块中 [C]:在函数“require”中 ./kamfmfm-model.lua:3:在主块中 [C]:在函数“require”中 tester.lua:6:在主块中 [C]:?

点赞