Module 是否从其他文件扩展名加载脚本?

Module 是否从其他文件扩展名加载脚本?,module,lua,require,file-extension,Module,Lua,Require,File Extension,是否可以从扩展名不是.lua的文件加载模块 require(“grid.txt”)结果为: module 'grid.txt' not found: no field package.preload['grid.txt'] no file './grid/txt.lua' no file '/usr/local/share/lua/5.1/grid/txt.lua' no file '/usr/local/share/lua/5.1/grid/txt/init.lua' no file '/us

是否可以从扩展名不是.lua的文件加载模块

require(“grid.txt”)结果为:

module 'grid.txt' not found:
no field package.preload['grid.txt']
no file './grid/txt.lua'
no file '/usr/local/share/lua/5.1/grid/txt.lua'
no file '/usr/local/share/lua/5.1/grid/txt/init.lua'
no file '/usr/local/lib/lua/5.1/grid/txt.lua'
no file '/usr/local/lib/lua/5.1/grid/txt/init.lua'
no file './grid/txt.so'
no file '/usr/local/lib/lua/5.1/grid/txt.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
no file './grid.so'
no file '/usr/local/lib/lua/5.1/grid.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
我怀疑在调用require?

之前将脚本加载到package.preload['grid.txt'](无论是什么)是可能的。如果您希望
require(“grid.txt”)
工作,如果有人尝试,那么是的,您需要手动
loadfile
并运行脚本,然后放入返回的内容(或者当模块不返回任何内容时,记录任何需要返回的内容)放入
package.loaded[“grid.txt”]


或者,您可以编写自己的加载器,只针对这样的条目,将其设置到
package.preload[“grid.txt”]
中,以查找并加载/运行文件,或者更一般地说,您可以编写一个加载器函数,将其插入
package.loaders
,然后让它在看到“*.txt”时执行其工作模块来了。

这取决于您所说的负载

如果要在当前目录中名为
grid.txt
的文件中执行代码,则只需执行
dofile“grid.txt”
。如果
grid.txt
位于不同的目录中,请给出它的路径


如果要使用
require
执行的路径搜索,请在
package.path
中为
.txt
添加具有正确路径的模板,然后执行
require“grid”
。注意没有后缀:
require
加载由名称而不是路径标识的模块。

或只执行
package.path=“?.txt;”…package.path
@hjpotter92假设他想写
require(“网格”)
,那么根据lhf在其答案中的评论,是。package.path=“?.txt;”。package.path获胜