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样式手动导出每个函数,这很好。