我无法在Lua中加载需要另一个模块的模块。我试过阅读官方文档,但我仍然不清楚。通过结合使用 package.path 和 require ,加载单个模块可以正常工作。但嵌套调用需要失败并产生错误:行中的C级太多(限制为200)
我的项目结构如下:
./exeDir:包含tBig.lua
./ utils:包含pkgBig.lua和pkgSmall.lua
pkgSmall.lua
-- this module is loaded later in pkgBig.lua
local function toto(s)
print('Toto says: ' .. s)
end
local function dummy()
print('Dummy')
end
pkgSmall =
{
toto = toto,
dummy = dummy,
}
return pkgSmall
pkgBig.lua
local myPkg = require 'pkgSmall'
local function titi(s)
print('Titi says (followed by dummy): ' .. s)
myPkg.dummy()
end
local function fifi()
print('Calling toto from fifi...')
myPkg.toto('FiFi called me')
end
pkgBig =
{
titi = titi,
fifi = fifi,
}
return pkgBig
主要剧本:
tBig.lua
package.path = package.path .. ';' .. 'pathToUtils/pkgBig.lua'
local big = require 'pkgBig'
big.titi(' called from main')
big.fifi(' pkgSmall test')
调用此脚本会产生“太多C级别......”错误。
答案 0 :(得分:1)
我无法重现您的错误。
但请注意pathToUtils
需要包含模块名称的模式。
这对我来说很好用:
pathToUtils = 'utils/?.lua'