我是Lua的新手。我使用castl编译了一个JS文件到lua 5.2:
castl -o script.js
这创建了一个名为 script.js.lua 的文件。这是我的新lua文件的第一行:
local _ENV = require("castl.runtime");
我尝试使用lua52 script.js.lua
运行该文件,但我收到此错误:
C:\Program Files\lua-5.2.4_Win64_bin\lua52.exe: script.js.lua:1: module 'castl.runtime' not found:
no field package.preload['castl.runtime']
no file 'C:\Program Files\lua-5.2.4_Win64_bin\lua\castl\runtime.lua'
no file 'C:\Program Files\lua-5.2.4_Win64_bin\lua\castl\runtime\init.lua'
no file 'C:\Program Files\lua-5.2.4_Win64_bin\castl\runtime.lua'
no file 'C:\Program Files\lua-5.2.4_Win64_bin\castl\runtime\init.lua'
no file '.\castl\runtime.lua'
no file 'C:\Program Files\lua-5.2.4_Win64_bin\castl\runtime.dll'
no file 'C:\Program Files\lua-5.2.4_Win64_bin\loadall.dll'
no file '.\castl\runtime.dll'
no file 'C:\Program Files\lua-5.2.4_Win64_bin\castl\runtime52.dll'
no file '.\castl\runtime52.dll'
no file 'C:\Program Files\lua-5.2.4_Win64_bin\castl.dll'
no file 'C:\Program Files\lua-5.2.4_Win64_bin\loadall.dll'
no file '.\castl.dll'
no file 'C:\Program Files\lua-5.2.4_Win64_bin\castl52.dll'
no file '.\castl52.dll'
stack traceback:
[C]: in function 'require'
script.js.lua:1: in main chunk
[C]: in ?
我错过了什么?我在Windows 10上。
答案 0 :(得分:0)
回答你的问题
我错过了什么?
您的问题是您使用的功能require
,但您不知道此功能的作用。因此,当你无法做出你期望它做的事情时,你无法理解它所引发的错误。
首先请参阅Lua手册: https://www.lua.org/manual/5.3/manual.html#pdf-require
你会发现:
require
使用存储的路径搜索Lua加载程序 package.path。如果这也失败了,它会使用。搜索C loader 存储在package.cpath中的路径。如果这也失败了,它会尝试一个 一体化装载机(参见package.searchers)。
和https://www.lua.org/manual/5.3/manual.html#pdf-package.path
require用于搜索Lua加载程序的路径。
在启动时,Lua使用的值初始化此变量 环境变量
LUA_PATH_5_3
或环境变量LUA_PATH
或者使用luaconf.h中定义的默认路径,如果是那些环境 变量没有定义。环境值中的任何;;
变量被默认路径替换。
进一步阅读: https://www.lua.org/pil/8.1.html
进入" Lua要求"进入任何网络搜索也将为您的问题提供大量解决方案。
正如hjpotter92在他的评论中已经说明的那样,你必须告诉你的计算机在哪里寻找你想要的文件,除非它们已经位于默认文件夹中。
将文件的位置添加到LUA_PATH
环境变量中,或在调用相应的require之前将其添加到package.path
字符串。
答案 1 :(得分:-1)
在这里我将留下一个答案,因为我认为所提供的答案实际上对那些对Lua生态系统一无所知的人无济于事。
为了解决require("castl.runtime")
,需要设置LUA_PATH
,在这种情况下,为简单起见,我们假设castl
分发服务器位于/Users/me/castl
,那么您可以:
export LUA_PATH="/Users/me/castl/lua/?.lua"
现在,如果您要运行Lua脚本,它将可以正确执行。