在過去的兩週左右,我已經用這個項目工作了至少一千行代碼,所以如果我無法實現這個工作,我會非常惱火。爲什麼Lua的相對路徑系統如此糟糕? (需要幫助)
我一直在Ubuntu 16.04服務器上運行Luvit環境用於託管我的項目。這是我目前的文件樹
我現在裏面(通過cd命令)的WrapperTest文件夾,然後運行該文件main.lua的圖像。這需要net/socket內的服務器文件。
出於某種原因,感覺就像Lua每次切換文件時都要更改文件路徑。這很煩人,因爲在這個項目中,網絡是MUST,我的文件甚至無法檢測到內置模塊。
有了Luvit,它提供了許多內置模塊,如coro-http
,你猜對了,它提供了對Lua的HTTP支持。爲什麼一旦我需要不同的文件,我突然無法檢測到正常的模塊,並且我的整個文件路徑都發生了變化。這真的讓我很煩,因爲這個項目是我很多空閒時間的頂點,所以我很樂意支持。如果有人提出要求,我會提供更多信息,因爲我知道我在這裏很模糊。
編輯:當我在require 'main'
WrapperTest,它成功地requires
WrapperTest/net/socket/server
。此服務器文件取決於WrapperTest/net/
中的'discordio.lua'。 'discordio.lua'需要同一目錄中的文件,其名稱爲http-lib
,路徑require "net/http-lib"
。在http-lib's
的第一行上,它需要一個名爲coro-http
的模塊,該模塊內置於Luvit的解釋器中。這失敗了一些奇怪的原因,我不明白爲什麼。
堆棧跟蹤(非官方的,因爲它是一個Luvit錯誤,不是純粹的LUA):
[string "bundle:deps/require.lua"]:278:
No such module 'net/discordio' in '/usr/local/WrapperTest/net/socket/server.lua'
./net/http-lib.lua:1: module 'coro-http' not found:
爲了減少模糊性和更好的說明這一點,可你也是一個簡單的例子,添加的問題?例如。當你需要'xyz'時,它不會'需要'different_path.some_module''之後,或類似的東西。另外添加你得到的錯誤消息/堆棧跟蹤。 – greatwolf
完成@greatwolf – Cryogenic
如果'coro-http'是Luvit解釋器的一部分,那麼這不是一個「相對路徑問題」。這是你的Luvit翻譯的問題。如果Luvit已經正確地將系統註冊到系統中,您應該可以從任何地方要求。 –