当Lua文件全部存放在同一文件夹中时,LuaEdit无法找到模块

时间:2012-06-02 22:38:48

标签: lua

我下载了LuaEdit作为IDE和调试工具,但即使是最简单的事情,我也无法使用它。我已经创建了一个包含2个文件的解决方案,所有这些文件都存储在同一个文件夹中。我的文件如下:

--startup.lua

require("foo")

test("Testing", "testing", "one, two, three")


--foo.lua

foo = {}

print("In foo.lua")

function test(a,b,c) print(a,b,c) end

当在我的C ++编译器中通过某些嵌入代码访问时,这很好用,但是当我尝试在LuaEdit中使用相同的代码时,它在第3行require("foo")崩溃,并显示错误:

module 'foo' not found:
no field package.preload['foo']
no file 'C:\Program Files (x86)\LuaEdit 2010\lua\foo.lua'
no file 'C:\Program Files (x86)\LuaEdit 2010\lua\foo\init.lua'
no file 'C:\Program Files (x86)\LuaEdit 2010\foo.lua'
no file 'C:\Program Files (x86)\LuaEdit 2010\foo\init.lua'
no file '.\foo.lua'
no file 'C:\Program Files (x86)\LuaEdit 2010\foo.dll'
no file 'C:\Program Files (x86)\LuaEdit 2010\loadall.dll'
no file '.\battle.dll'

我还尝试在将这些文件添加到解决方案之前创建这些文件并仍然得到相同的错误。有什么设置我不见了?拥有一个IDE /调试器会很棒,但如果它无法运行链接函数,那对我来说就没用了。

2 个答案:

答案 0 :(得分:3)

问题可能是您的Lua文件不在package.path的路径上(对于C文件,这是package.cpath)。

我的猜测是LuaEdit程序没有在您的文件所在的目录中启动,因此与.\foo.lua没有匹配。

你有3个简单的解决方案(从哑到聪明):

  • 找出LuaEdit认为的路径./并将您的文件放在那里。
  • 在右侧目录(包含文件的目录)中打开终端,然后从那里运行LuaEdit。
  • 在执行任何require之前,将文件所在的路径添加到package.pathpackage.cpath

答案 1 :(得分:3)

您可能需要输入:

lua package.path = package.path..";c:/path/to/my/files/?.lua"

在任何require之前的文件开头(如jpjacobs所示)。我找不到任何方法从LuaEdit本身提供这个。它似乎使用其完整路径运行脚本,但将其当前目录设置为IDE启动时的任何设置。如果您使用您的应用程序文件夹中的完整路径运行LuaEdit,即使没有package.path更改,它也应该可以正常工作。

虽然IDE本身可以使用自己的模块/库,但并不意味着它可以运行它所使用的应用程序。

(无耻的插件)如果你对LuaEdit仍然不满意,我会提供ZeroBrane Studio Lua IDE作为替代,它基于相同的wxLua框架,但提供了更多的功能,并没有这个你面临的特殊问题。它还支持远程调试,因此您应该能够直接从应用程序调试Lua脚本。