LUA 错误:尝试索引零值 @6:16

Posted

技术标签:

【中文标题】LUA 错误:尝试索引零值 @6:16【英文标题】:LUA Error: attempt to index a nil value @6:16 【发布时间】:2016-04-01 11:03:29 【问题描述】:

我正在尝试通过发送请求来检索 Entryhandle UUID。但是,我每次都会收到此错误。谁能帮我解决它或指出我在哪里犯了错误?

local config=

config.mcast_mac = "00:0a:cd:16:da:f1"


function rpc:epm()                                                                    


 local pkt = CreateFromPath("ethernet/ip/udp/dcerpc/epm")

 --[[data is put here]]


 SendAndWait(pkt, function(res)
local epm = res.get_layer("epm")
--[[data is put here--]]
handle = epm.EntryHandleUUID.to_string()

print("EntryHandleUUID:",handle)

 end



 end,2000)

  return handle

  end 

【问题讨论】:

你的错误是你索引一个 nil 值。你的变量之一是零。因此,您无法使用点运算符访问其任何成员。你没有带有行号的堆栈跟踪吗? 【参考方案1】:

此代码不是有效的 Lua 代码。假设从print 之后的行中删除end。 要找出您尝试访问 nil 值的位置,您只需在每个索引操作之前添加 assert

local config=

config.mcast_mac = "00:0a:cd:16:da:f1"

assert(rpc, 'rpc is NULL')

function rpc:epm()
  local pkt = CreateFromPath("ethernet/ip/udp/dcerpc/epm")
  --[[data is put here]]
  SendAndWait(pkt, function(res)
    assert(res, 'res is NULL')
    local epm = res.get_layer("epm")
    --[[data is put here--]]
    assert(epm, 'epm is NULL')
    local uuid = epm.EntryHandleUUID
    assert(uuid, 'epm.EntryHandleUUID is NULL')
    handle = uuid.to_string()
    print("EntryHandleUUID:",handle)
  end, 2000)
  return handle
end

【讨论】:

以上是关于LUA 错误:尝试索引零值 @6:16的主要内容,如果未能解决你的问题,请参考以下文章

Lua 脚本 - 尝试索引全局(零值)

Lua - util_server.lua:440 尝试索引本地“自我”(零值)

错误:尝试索引本地“自我”(零值)

Lua“尝试索引?(一个零值)

尝试索引全局 'io'(零值)

'尝试索引字段'颜色'(零值)'在LUA中访问数组时