如何在 LuaJit 最新版本中发送 HTTP 请求,哪个库实际上可以使用?

我需要在 LuaJit 2.0.5 中发送 HTTP 请求。到目前为止,我尝试了 3 个 HTTP 客户端库,但都没有生效。由于安装期间出现错误,我无法安装最新的一个。

我的 Lua 版本是 5.3

在 LuaJit 2.0.5 中是否有确保可用的客户端 HTTP 库?我将能够安装并使用它。


LuaSocket -- 安装后无法使用:

luasocket 3.0rc1-2 现已安装在 /usr 中(许可证:MIT)

$ luajit
LuaJIT 2.0.5 -- 版权所有(C)2005-2017 Mike Pall。http://luajit.org/
JIT: ON CMOV SSE2 SSE3 SSE4.1 fold cse dce fwd dse narrow loop abc sink fuse
> a1 = require "socket"
从文件 '/usr/lib/lua/5.3/socket/core.so' 加载模块 'socket.core' 时出错:
    /usr/lib/lua/5.3/socket/core.so: undefined symbol: luaL_setfuncs
stack traceback:
    [C]: at 0x5617fff23fb0
    [C]: in function 'require'
    /usr/share/lua/5.3/socket.lua:12: in main chunk
    [C]: in function 'require'
    stdin:1: in main chunk
    [C]: at 0x5617ffed4c00

点赞
用户4984564
用户4984564
  • LuaSocket 可在 5.1、5.2 和 5.3 版本的 Windows 和 Linux 上工作。
  • LuaHTTP 可在 5.1、5.2 和 5.3 版本上工作,但仅支持 Linux。
  • Luvit 特别使用 LuaJIT,但它提供了一个单独的二进制文件。

快速的谷歌搜索还找到了 这个,但我不知道它是否可用。


你遇到的关于 LuaSocket 的问题很奇怪。

你没有使用 Lua 5.3,而是使用 LuaJIT,它在很大程度上是 Lua 5.1 的重写; 但是它正在寻找在 5.3 目录下的 socket 包。

这很可能是因为你将 LUA_CPATH 设定为 Lua 5.3 的包含路径。这在安装了多个 Lua 系统的系统上永远不应该使用,因为 所有 Lua 版本都使用该环境变量,它甚至遮盖了较新版本中的版本特定 LUA_CPATH_X_Y 变量。

  1. 找出环境变量 LUA_CPATH 的确切值。
  2. 理想情况下,应该取消设置此变量。
  3. 如果不是3(这不是),找出该变量设置的位置。常见的疑点是:项目配置文件、你的 .bashrc.profile 文件(位于你的主目录中)。
  4. 修复这些变量。Lua 5.3 还使用变量 LUA_CPATH_5_3,因此,如果你不想破坏任何东西,只需更改为该值即可。

快速注释:我没有提到 LUA_PATHLUA_PATH_5_3,因为你的问题是关于一个 C 模块; 但最有可能,你在这些变量中也遇到了同样的问题,因此你应该按照相同的步骤进行处理。

2019-07-08 13:39:00