访问模块函数时出现错误

我在 Lua 的基本模块使用中遇到了一个问题。我有一个文件“helloworld.lua”和一个第二个文件“main.lua”。我想在第二个文件中调用第一个文件中的一个函数。但我得到了一个错误:

attempt to call field 'printText' (a nil value)

我的实际代码如下。有人能告诉我问题在哪里吗?

helloworld.lua

local module = {}

function module.printText()
    print("Hello world")
end

return module

main.lua

hello = require("helloworld")

hello.printText()
点赞
用户369792
用户369792

如评论中所提到的那样,这是正确的操作方式。如果存在冲突的 helloworld 模块或者您在修改文件时没有启动新的 lua 状态,这可能会成为一个问题。

require 只会加载一次传递的模块。检查 package.loaded["helloworld"],您可以将其设置为 nil,这样就能够重新加载文件:

package.loaded["helloworld"] = nil
hello = require("helloworld") -- 确保会重新加载
2018-07-15 06:25:26