关于使用标准相对路径方法要求LUA文件:使用标准相对路径方法要求LUA文件-问题:尝试调用全局’myfunc'(nil值)


Require LUA files using a standard relative path approach - problems with: attempt to call global 'myfunc' (a nil value)

我需要调用另一个我的.lua文件中定义的LUA函数; 从另一个。 因此,我想要的是经典的C / C ++包含方法。
我尝试了以下方法:

1
2
3
4
(file funcs.lua)
function myfunc(arg1, arg2)
 ..dosomething
end

1
2
3
4
(file main.lua)
package.path = package.path ..";/path/to/libs/?.lua"
require"funcs"
myfunc(1, 2)

需求工作正常,但执行时出现此错误:

1
attempt to call global 'myfunc' (a nil value)

怎么会?
提前致谢,


谢谢大家的评论; 我正在OpenResty / Nginx下运行LUA。

我直接导出函数来解决问题,我不知道这是否是首选方法,但是我注意到许多新的LUA模块都使用了该方法。
例如,我将代码更改如下:

1
2
3
4
5
6
7
8
9
10
11
file (funcs.lua)
local A = {}
function A.myfunc(arg1, arg2)
 ..dosomething
end
return A

(file main.lua)
package.path = package.path ..";/path/to/libs/?.lua"
funcs = require"funcs"
funcs.myfunc(1, 2)

这很好用,并且可以以OOP样式手动导出每个函数,这很好。