在Nginx中使用Lua模块

我正在使用Nginx + Lua。 我有一个Lua模块,我正在努力从Nginx中访问它,但我确实遇到了一些错误。

以下是我的Lua模块。

local _M = {}

function Set (list)
  local set = {}
  for _, l in ipairs(list) do set[l] = true end
  return set
end

local items = Set { "Apple", "Pear", "Banana" }

local mt = { __index = _M }

function _M.new(self)
    return setmetatable({items=items}, mt)
end

function _M.isFruit(self, item)
  if self.items[item] then
    return true
  end
  return false
end

return _M

现在我尝试在Nginx的access_by_lua指令中访问它,如下所示

local f = require "fruits"
local fruit = f:new()
fruit:isFruit("Apple")

这里我遇到了以下错误。

lua entry thread aborted: runtime error: access_by_lua:3: attempt to call method 'isFruit' (a nil value)

我不明白出了什么问题。 任何帮助都将不胜感激。 谢谢!

我正在使用带有Lua JIT 2.0.2的Nginx 1.6.2。 EDIT:更正了错误消息中的行号。

点赞
用户7446761
用户7446761

如果您对 Lua 有困难,这里提供一个 Python 模块 here。我知道 Lua 并不是很常见,所以你们中的许多人从未尝试过,而 Python 如今非常流行。我尝试了一下,似乎很不错。

2017-01-20 14:40:55