Lua要求不工作

时间:2017-11-15 23:16:18

标签: lua

我试图让一个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附近的任何文件,我不明白为什么。

1 个答案:

答案 0 :(得分:3)

requirepackage.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.pathvia environment variable, startup script,...?)和/或b)将当前目录添加到搜索路径中。