gpt4 book ai didi

Lua 需要不工作

转载 作者:行者123 更新时间:2023-12-04 22:37:32 27 4
gpt4 key购买 nike

我试图让一个 lua 文件需要另一个。我正在遵循本指南:http://lua-users.org/wiki/ModulesTutorial

我的基本测试,应该是一个微不足道的 hello world,不起作用,我不知道为什么。

这是一个显示所有文件和所有错误的控制台日志:

C:\Users\TestUser\Desktop\LuaTest>dir
Volume in drive C has no label.
Volume Serial Number is XXXX-XXXX

Directory of C:\Users\TestUser\Desktop\LuaTest

11/15/2017 03:03 PM <DIR> .
11/15/2017 03:03 PM <DIR> ..
11/15/2017 02:53 PM <DIR> Bar
11/15/2017 03:04 PM 92 BazModule.lua
11/15/2017 02:53 PM <DIR> Foo
11/15/2017 03:08 PM 139 main.lua
2 File(s) 231 bytes
4 Dir(s) 253,774,073,856 bytes free

C:\Users\TestUser\Desktop\LuaTest>lua main.lua
lua: main.lua:1: module 'BazModule' not found:
no field package.preload['BazModule']
no file 'C:\dev\LuaDist\bin'
no file '.\BazModule.dll'
no file 'C:\dev\LuaDist\bin\..\lib\lua\BazModule.dll'
no file 'C:\dev\LuaDist\bin\..\lib\lua\loadall.dll'
stack traceback:
[C]: in function 'require'
main.lua:1: in main chunk
[C]: ?

C:\Users\TestUser\Desktop\LuaTest>type main.lua
local baz = require("BazModule")
baz.Baz()

local bar = require("Bar.BarModule")
bar.Bar()

local foo = require("Foo.FooModule")
foo.Foo()

C:\Users\TestUser\Desktop\LuaTest>type BazModule.lua
local BazModule = {}

function BazModule.Baz()
print("Hello Baz!")
end

return BazModule

C:\Users\TestUser\Desktop\LuaTest>lua -v
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio

预期的输出应该是
Hello Baz!
Hello Bar!
Hello Foo!

但它找不到与 main.lua 相邻的任何文件,我不明白为什么。

最佳答案

require package.path 中列出的目录中搜索(对于 Lua 文件)和 package.cpath (对于已编译的库)。

您的错误信息...

lua: main.lua:1: module 'BazModule' not found:
no field package.preload['BazModule']
no file 'C:\dev\LuaDist\bin'
no file '.\BazModule.dll'
no file 'C:\dev\LuaDist\bin\..\lib\lua\BazModule.dll'
no file 'C:\dev\LuaDist\bin\..\lib\lua\loadall.dll'

表示 require 的路径搜进去了,好像是 package.path完全是空的,或者那里可能有一个格式错误的路径模式。 (这将是 C:\dev\LuaDist\bin 。)

way the search for a module foo.bar works?foo/bar 取代(或 foo\bar – 取决于操作系统)等等 ./?.lua会找到 ./foo/bar.lua .

所以解决这个问题的方法是 (a) 修复你(或你安装的东西)正在/正在破坏 package.path 的地方( via environment variable, startup script , ...?) 和/或 (b) 将当前目录添加到搜索路径。

关于Lua 需要不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47318950/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com