【发布时间】:2015-02-23 02:15:58
【问题描述】:
我正在编写一个 Lua 脚本,并尝试对与主脚本位于同一目录中的文件使用 require。我似乎无法在这种情况下工作,并尝试了几种我找到的解决方案,但似乎都没有。我在一个目录中有以下文件:
main.lua
helper.lua
我尝试了以下解决方案,并在每个解决方案之后都收到了错误:
解决方案 1:
local folderOfThisFile = (...):match("(.-)[^%.]+$")
local helper = require(folderOfThisFile .. 'helper')
lua: ...domizerWPF\DataFiles\LUA\main.lua:2: attempt to index local 'pathOfThisFile' (a nil value)
stack traceback:
...domizerWPF\DataFiles\LUA\main.lua:2: in main chunk
[C]: ?
解决方案 2:
package.path = "/?.lua;" .. package.path
local helper = require('helper')
lua: ...domizerWPF\DataFiles\LUA\main.lua:2: module 'helper' not found:
no field package.preload['helper']
no file '/helper.lua'
no file '.\helper.lua'
no file 'C:\Program Files (x86)\Lua\5.1\lua\helper.lua'
no file 'C:\Program Files (x86)\Lua\5.1\lua\helper\init.lua'
no file 'C:\Program Files (x86)\Lua\5.1\helper.lua'
no file 'C:\Program Files (x86)\Lua\5.1\helper\init.lua'
no file 'C:\Program Files (x86)\Lua\5.1\lua\helper.luac'
no file '.\helper.dll'
no file '.\helper51.dll'
no file 'C:\Program Files (x86)\Lua\5.1\helper.dll'
no file 'C:\Program Files (x86)\Lua\5.1\helper51.dll'
no file 'C:\Program Files (x86)\Lua\5.1\clibs\helper.dll'
no file 'C:\Program Files (x86)\Lua\5.1\clibs\helper51.dll'
no file 'C:\Program Files (x86)\Lua\5.1\loadall.dll'
no file 'C:\Program Files (x86)\Lua\5.1\clibs\loadall.dll'
stack traceback:
[C]: in function 'require'
...domizerWPF\DataFiles\LUA\main.lua:2: in main chunk
[C]: ?
我尝试了解决方案 2 的变体,其中包含各种路径,例如“?.lua;”和“./?.lua;”无济于事。
【问题讨论】:
-
您的进程的当前工作目录是什么?
-
你是指lua exe还是脚本? lua exe 位于程序文件 (x86) 中。该脚本位于一个单独的文件夹中,如下所示:c:\lua files\.
-
lua.exe— 要求查找与 CWD 相关的文件,据我所知。 -
如果您从命令行运行它,请务必 cd 进入工作目录。如果是快捷方式,请在其属性中设置 workdir。
-
因此,只需在运行前将带有脚本的路径添加到 package.path 即可。