我试图让一个lua文件需要另一个。我正在遵循本指南:http://lua-users.org/wiki/ModulesTutorial
我的基本测试,应该是一个微不足道的hello世界,不起作用,我无法弄清楚原因。
这是一个控制台日志,显示所有文件和所有错误:
<div class=col-xs-3>
<span id="2">
<center>
Технологии
<br />
<button onclick="fireUp(1)">Приручение огня</button>
<br />
</center>
</span>
</div>
<div class=col-xs-6>
<center>
<button onclick="cookieClick(1)">Человек</button>
<br /> Население: <span id="cookies">0</span>
<br /> <button onclick="buyCursor()">Buy Cursor</button>
<br /> Cursors: <span id="cursors">0</span>
<br /> Cursor Cost: <span id="cursorCost">10</span>
<br />
<span id="1">
<button onclick="buyCave()">Найти пещеру</button>
<br /> Caves: <span id="caves">0</span>
<br /> Cave Cost: <span id="caveCost">10</span>
</span>
<br />
<span id="1.1">Люди замерзают, необходимы костры</span>
</center>
</div>
<div class=col-xs-3>
<span id="3">
Постройки
<br /><button onclick="fireClick(1)">Костер</button>
<br />Костров: <span id="fires">0</span>
<br /><button onclick="buyFire()">Разводитель костров</button>
<br />
<span id="fireCost">10</span>
</span>
</div>
预期输出应为
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
但它找不到main.lua附近的任何文件,我不明白为什么。
答案 0 :(得分:3)
require
在package.path
(对于Lua文件)和package.cpath
(对于已编译的库)中列出的目录中进行搜索。
您的错误讯息......
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'
表示require
搜索的路径。似乎package.path
完全为空,或者可能存在单个格式错误的路径模式。 (这将是C:\dev\LuaDist\bin
。)
way the search for a module foo.bar
works ?
被foo/bar
(或foo\bar
- 取决于操作系统)取代,因此./?.lua
会找到./foo/bar.lua
所以解决这个问题的方法是(a)修复你(或你安装的东西)正在/ package.path
(via environment variable, startup script,...?)和/或b)将当前目录添加到搜索路径中。