【发布时间】:2013-08-10 03:37:40
【问题描述】:
通常当我有关于远程软件相关的问题时,我发现其他人已经问过同样的问题,并且得到了对我也有用的好答案。
不过,这一次,我没能找到解决我困境的办法。
我们开始: 我目前正在尝试将我的 Lua 编程提升一个或三个等级,并希望使用模块。所以,我有一个这样的结构:
main.lua
foo/bar.lua
现在,我在 main.lua 中做
require("foo.bar")
失败了,
main.lua:1 module 'foo.bar' not found:
no field package.preload['foo.bar']
no file 'foo.bar.lua'
no file 'foo.bar.lua'
no file 'foo.lua'
好的,我的package.path 可能有问题,所以我使用package.searchpath("foo.bar", package.path) 来查看我做错了什么。
问题在于package.searchpath 将foo.bar 解析为foo/bar.lua,这是完全正确的。
据我了解,package.searchpath 尝试以与 require 相同的方式查找模块,但在我的情况下似乎存在一些故障。
让我感到奇怪的是错误输出中 no file 'foo.bar.lua' 的重复
我误解了 require 的用法吗?
我正在使用 LuaJIT-2.0.0 运行我的块
更新:
我正在使用 LuaJIT-2.0.0 运行我的块
【问题讨论】:
-
你可以试试 lua.org 的现货 Lua 吗?
-
您能否在您的设置中加入
package.path的内容? -
This 可能是相关的。
-
@lhf,我用 Lua-5.2.2 试了一下,效果很好……看来问题出在 LuaJIT 上。
-
@greatwolf ,我会尝试您的方法来解决 LuaJIT 的问题(不幸的是,目前无法更改此选项)