Lua编程时遇到的一个错误:attempt to index upvalue-程序员宅基地

技术标签: lua  openresty  开发语言  

最近用OpenResty开发一个产品。新学Lua语言,写了不少脚本。前几天遇到这么一个运行时错误:

2022/01/21 18:57:01 [error] 581744#0: *74 lua entry thread aborted: runtime error: /opt/lua/blacklist.lua:98: attempt to index upvalue 'actions' (a number value)

简化一下,blacklist.lua代码如下:

local actions = require("actions")

local function do_something()
  actions.do_something() --gg
end

很奇怪。于是加了日志,发现actions这个变量确实是数字,是一个不认识的浮点数。我以为是变量被篡改了。
别的模块调用actions并没有问题啊,只有这个blacklist模块有问题。而且这样修改一下就正常:

local function do_something()
  require("actions").do_something() --good
end

但是原因没查清,不敢就这样放过。查了一个上午,没结论。
到了下午,手气来了……一眼看到actions模块中有这么一行:

local blacklist = require("blacklist")

循环引用!
作为新手的我,还真不知道Lua模块不允许循环引用啊,毕竟解释器没报错。
实际上也不是完全不允许循环引用,只是在模块顶层require的时候有这个限制。

知道原因就好办了:把两个模块中公共代码提取出来放到第三个模块,去掉上面的一个require语句就可以了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wesleyflagon/article/details/122704311

智能推荐

Windows 10搭建FTP 服务器保姆教学_win10ftr服务器-程序员宅基地

文章浏览阅读1k次。windows10搭建FTP服务器保姆教程:Ⅰ。我们需要打开windows的FTP服务器功能。Ⅱ。我们需要切断防火墙对FTP服务器的拦截。Ⅲ。新建一个本地用户。Ⅳ。新建一个存放传输文件的文件夹Ⅴ。搭建FTP服务器。_win10ftr服务器

Unity插件——Odin 学习笔记(一)_unity odin-程序员宅基地

文章浏览阅读2.6w次,点赞27次,收藏108次。本文章是为了记录学习Unity插件Odin,使用该插件可以让我们更快速便捷的开发Unity工具前言Unity原生编辑编辑器的方法有两种——IMGUI和新的UIElement1.UIElement我之前做过介绍,开发模式类似于HTML+CSS,如果有类似经验的人开发及相对容易,但是就目前而言不太适合编辑器开发,我觉得比较适合取代UGUI进行UI开发2.IMGUI入门比较简单,使用Edit..._unity odin

python 数据类型介绍_python中数据类型的作用-程序员宅基地

文章浏览阅读1.8k次。在 Python 中,数据类型是区分数据的种类和存储方式的标识符。它定义了数据的取值范围、占用空间大小、可操作特性等。Python 中常见的数据类型包括数字、字符串、列表、元组、集合和字典等。数据类型在编程中的作用主要有以下几个方面:不同的数据类型需要占用不同的内存空间,因此在内存空间的管理上,数据类型具有重要的作用。例如,在处理大量数据时,选择合适的数据类型可以有效地减少内存占用,提高程序的执行效率。数据类型定义了数据的表达方式和可操作性,使得程序能够对不同类型的数据进行有效的处理。_python中数据类型的作用

[kubernetes]-kubernetes使用nodeport暴露jacoco地址_kubernetes暴露jacoco端口-程序员宅基地

文章浏览阅读740次。测试环境 需要启动jacoco 并暴露端口 replicas为1 但是node为2个 没有指定pod在哪个节点上启动。因此打算用nodeport的方式暴露出来,这样认准一个node+nodeport就可以跑jacoco了haozhuo-health-deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata:# deployment名字 和svc 和ingress绑定没关系 name: haozhuo-health-dp na_kubernetes暴露jacoco端口

SpringCloud整合项目Maven导入失败无法解析 org.springframework.cloud:spring-cloud-starter-XXXX:unknown_无法解析 org.springframework.cloud:spring-cloud-depend-程序员宅基地

文章浏览阅读1.6k次。springcloud maven导入失败_无法解析 org.springframework.cloud:spring-cloud-dependencies:pom:finchley.m8

PictureSelector 相册全白不显示问题,真服了_pictureselector.create 相册显示不出-程序员宅基地

文章浏览阅读566次。.load(url) .into(new ImageViewTarget<Bitmap>(imageView) { @Override public void onLoadStarted(@Nullable Drawable placeholder) { super.onLoadStarted(placeholder); ..._pictureselector.create 相册显示不出

随便推点

PyCharm入门教程——保存和还原更改_pycharm您的本地更改将被合并覆盖。 提交、存储或还原您的更改以继续-程序员宅基地

文章浏览阅读4.9k次。PyCharm最新版本下载JetBrains PyCharm是一种Python IDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。此外,该IDE提供了一些高级功能,以用于Django框架下的专业Web开发。PyCharm会自动保存您在文件中所做的更改。保存由各种事件触发,例如编译、运行、调试、执行版本控制操作、关闭文件或项目或完全退出IDE。实际事件是预定义的,..._pycharm您的本地更改将被合并覆盖。 提交、存储或还原您的更改以继续

机器学习-决策树:python “AttributeError: '_csv.reader' object has no attribute'next'”_attributeerror: '_csv.writer' object has no attrib-程序员宅基地

文章浏览阅读532次。(1)reader.next()改为next(reader)(2)open(‘AllElectronics.csv’, ‘rb’)中的rb改成rt_attributeerror: '_csv.writer' object has no attribute 'writeheader

银行卡验证工具类分享_private static card card = card.getinstance();-程序员宅基地

文章浏览阅读4.9k次。用于验证的请求接口:https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo=6217002430035835629&cardBinCheck=true返回:{“bank”:”CCB”,”validated”:true,”cardType”:”DC”,”key”:”621700243003_private static card card = card.getinstance();

fatal error C1083: 无法打开包括文件: “Eigen\Dense”: No such file or directory_c1083无法打开包括文件: “eigen/dense”: no such file or dire-程序员宅基地

文章浏览阅读7.9k次,点赞18次,收藏30次。参考资料:CSDN、博客园等网上众多资料Eigen库,哎,感觉自己好蠢~我的包含路径是到你的路径…\Eigen我include<Eigen\Dense>标红,其实只要include就行,因为你的路径已经包含到Eigenl了这里要记一下的是你的包含路径到你要找的库的前一级用图来解释一下吧!我的Eigen库路径如下先来一波错误示范:在这里我们要使用Eigen下的Dense..._c1083无法打开包括文件: “eigen/dense”: no such file or directoryh:\work\6

科研绘图学习笔记1_科研笔记1:科研绘图-程序员宅基地

文章浏览阅读182次。在选定对应的色轮配色方案后,我们可根据它提供的 HEX 颜色码或 R、G、B 值进行配色的拾取,从而完成插图颜色的选择。ColorBrewer 2.0 是一个专业的在线配色方案网站,它提供了大量的颜色搭配主题,这些主题是众多绘图工具(如 Matplotlib、ggplot2 等)内置的绘图颜色主题。要避免出现文字较少、图表较多的情况,即无须将原始数据和中间处理过程涉及的插图全部展示在论文中,而应在有复杂和多维数据的情况下,提高精选插图的能力,而非简单地堆砌插图。在科研论文配图绘制的过程中应用较少。_科研笔记1:科研绘图

2020年南大计算机、软件工程考研经验分享_南京大学考研压分吗-程序员宅基地

文章浏览阅读2.1w次,点赞40次,收藏150次。南大20计算机学院考研打算考南京大学通信的学弟学妹你们好,首先欢迎大家选择我们计算机学院,计算机学院是我们学校的王牌学院。为了帮大家更好的了解我们学院的情况以及如何准备考研,我将从以下两个方面来介绍,觉得我写的还尚可的话,可以给我手动点赞哈。(2020年南大计算机考研资料分享及经验交流群:645638416)1:学院报考情况由于2019年的南京大学考研的数据在2020年的9月份才会公布..._南京大学考研压分吗

推荐文章

热门文章

相关标签