Lua:module' castl.runtime'未找到

时间:2017-03-20 08:11:37

标签: lua dependencies castl

我是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上。

2 个答案:

答案 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脚本,它将可以正确执行。