【发布时间】:2017-11-16 07:51:43
【问题描述】:
我正在尝试使一个 lua 文件需要另一个文件。我正在关注本指南:http://lua-users.org/wiki/ModulesTutorial
我的基本测试应该是一个微不足道的 hello world,但它不起作用,我不知道为什么。
这是一个显示所有文件和所有错误的控制台日志:
C:\Users\TestUser\Desktop\LuaTest>dir
Volume in drive C has no label.
Volume Serial Number is XXXX-XXXX
Directory of C:\Users\TestUser\Desktop\LuaTest
11/15/2017 03:03 PM <DIR> .
11/15/2017 03:03 PM <DIR> ..
11/15/2017 02:53 PM <DIR> Bar
11/15/2017 03:04 PM 92 BazModule.lua
11/15/2017 02:53 PM <DIR> Foo
11/15/2017 03:08 PM 139 main.lua
2 File(s) 231 bytes
4 Dir(s) 253,774,073,856 bytes free
C:\Users\TestUser\Desktop\LuaTest>lua main.lua
lua: main.lua:1: module 'BazModule' not found:
no field package.preload['BazModule']
no file 'C:\dev\LuaDist\bin'
no file '.\BazModule.dll'
no file 'C:\dev\LuaDist\bin\..\lib\lua\BazModule.dll'
no file 'C:\dev\LuaDist\bin\..\lib\lua\loadall.dll'
stack traceback:
[C]: in function 'require'
main.lua:1: in main chunk
[C]: ?
C:\Users\TestUser\Desktop\LuaTest>type main.lua
local baz = require("BazModule")
baz.Baz()
local bar = require("Bar.BarModule")
bar.Bar()
local foo = require("Foo.FooModule")
foo.Foo()
C:\Users\TestUser\Desktop\LuaTest>type BazModule.lua
local BazModule = {}
function BazModule.Baz()
print("Hello Baz!")
end
return BazModule
C:\Users\TestUser\Desktop\LuaTest>lua -v
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
预期的输出应该是
Hello Baz!
Hello Bar!
Hello Foo!
但它找不到任何与 main.lua 相邻的文件,我不明白为什么。
【问题讨论】:
-
我尝试了一个备用 main.lua: local baz = module("BazModule", package.seeall) baz.Baz() local bar = module("Bar.BarModule", package.seeall) bar .Bar() local foo = module("Foo.FooModule", package.seeall) foo.Foo() ==== 这产生了这个不起作用的替代错误输出:==== C:\Users\TestUser \Desktop\LuaTest>lua main.lua lua: main.lua:4: 尝试索引本地 'baz' (一个 nil 值) 堆栈回溯: main.lua:4: in main chunk [C]: ?
-
下次谷歌“找不到lua模块”
标签: lua