2013-12-17 76 views
3
以上的目錄

我有類似的東西。如何使用.lua導航到

/config.lua 
/client/init.lua 

我怎麼能包括config.luainclude()dofile()? Lg

+1

'dofile「/config.lua」'不適合你? – lhf

+0

否:http://puu.sh/5PTeZ.png – nn3112337

+0

奇數。你在Linux上,你的文件系統的根目錄是config.lua?所以,如果你做「ls /*.lua」你看到config.lua列出? – Schollii

回答

0

你在正確的軌道上dofile。 (然而,在Lua沒有include功能)。正如你可能已經注意到了,你不能require做到這一點:

local cfg = require'../config' 

require通常從最初的腳本在目錄工作單向,以及需要自己模塊的任何必需模塊必須使用相對來自該起點的名稱才能正常工作。

I.e.,如果你有以下結構:

 
--+ main.lua   requires 'lib.test1' 
    +-- lib/test1.lua requires 'test2' 
    +-- lib/test2.lua 

test1.lua失敗要求test2,因爲它無法從最初的目錄中找到。 lib.test2是此處適當的模塊名稱。我不確定是否有任何好的模式,但是寫出自己的有狀態require,但在編寫庫代碼時知道這一點很有幫助。

也許這是一個不好的跡象,當涉及到這一點。


回過頭來看看這個問題,你可以作出的豁免您config文件package.loaded。這是有效的手動加載它:

package.loaded.config = dofile'../config.lua' 
-- ... 
local cfg = require'config' 
+0

你好,首先感謝你的回答,但它不起作用。 (我的配置名爲job_config):http://puu.sh/5PWb3.png結構看起來像這樣:(在兩個文件夾中都有一個。lua誰需要包含配置)http://puu.sh/5PWdB.png – nn3112337

+0

你的當前目錄與'job_config.lua'有關嗎?你應該可以通過打印io.popen('cd','r')來確定它:在某個地方讀取'* a''或在終端中運行'os.execute'cd''。 –

+0

http://puu.sh/5PXSv.png服務器看起來一樣 – nn3112337

3

你可以(並且可能應該)做這與require加入../?.luapackage.path,像這樣:

package.path = package.path .. ";../?.lua" 
require "config" 

requirepackage.path文檔的更多信息。

+0

我已經試過了,沒有工作,但無論如何感謝 – nn3112337