说我有一个项目文件夹,例如:
mxn:lab axn$ tree .
.
├── lib
│ ├── a.lua
│ └── b.lua
└── main.lua
其中main.lua
:
require("lib.a")
在a.lua
我只使用字符串"b"
,试图告诉 lua - 找到一个文件,其名称b.lua
在 first 的同一文件夹中a.lua
:
require("b")
和b.lua
:
print('b loaded!')
然后我运行命令lua main.lua
并得到错误:
[Running] lua "/Users/axn/lab/main.lua"
lua: ./lib/a.lua:1: module 'b' not found:
no field package.preload['b']
no file './b.lua'
no file '/usr/local/share/lua/5.1/b.lua'
no file '/usr/local/share/lua/5.1/b/init.lua'
no file '/usr/local/lib/lua/5.1/b.lua'
no file '/usr/local/lib/lua/5.1/b/init.lua'
no file './b.so'
no file '/usr/local/lib/lua/5.1/b.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
stack traceback:
[C]: in function 'require'
./lib/a.lua:1: in main chunk
[C]: in function 'require'
/Users/axn/lab/main.lua:1: in main chunk
[C]: ?
我知道像这样package.path = package.path..';'..'lib/?.lua'
的解决方案,但是如果结构更改为:
.
├── foo
│ └── lib
│ ├── a.lua
│ └── b.lua
└── main.lua
我不想再次修改 package.path。不管结构是什么,require("b")
ina.lua
总是会让luab
在first的同一个文件夹中搜索a.lua
。