如何使用 .lua 导航到上面的目录

nn3*_*337 5 directory lua path

我有这样的事情。

/config.lua
/client/init.lua
Run Code Online (Sandbox Code Playgroud)

如何包含config.luawithinclude()dofile()?升

fur*_*urq 5

您可以(并且可能应该)require通过添加../?.luato 来做到这一点package.path,如下所示:

package.path = package.path .. ";../?.lua"
require "config"
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅requirepackage.path文档。


Rya*_*ein 0

您走在正确的轨道上dofile。(但是, Lua 中没有这个 函数。 )正如您可能已经注意到的,您不能使用以下命令来执行此操作:include require

local cfg = require'../config'
Run Code Online (Sandbox Code Playgroud)

require通常从初始脚本的目录以单向方向工作,并且需要自己的模块的任何必需模块必须使用从该起点开始的相对名称才能正常工作。

,如果您具有以下结构:

--+ main.lua 需要 'lib.test1'
  +-- lib/test1.lua 需要“test2”
  +-- lib/test2.lua

test1.lua无法要求,test2因为无法从初始目录中找到它。lib.test2此处是适当的模块名称。我不确定是否有任何好的模式,除了编写自己的 stateful 之外require,但在编写库代码时了解这一点很有帮助。

也许这是一个坏兆头。


回到问题,您可以对您的config文件进行豁免package.loaded。这实际上是手动加载它:

package.loaded.config = dofile'../config.lua'
-- ...
local cfg = require'config'
Run Code Online (Sandbox Code Playgroud)