到底错哪儿了?我遇到的bug记录、踩坑历史
服务端
站点莫名崩溃
递归、死循环了。一个数据项的父级设置成了自身。
所以,在准备递归时,要检查父级,要父级不等于当前项id再继续调用自身。
NPOI对Excel导入数据异常
- 用NPOI进行Excel导入,如果对数值列运用了函数公式处理,则数据导入可能会出问题。因为它不是数值类型了。
数据库
SQL Server 配置了允许远程访问,但远程访问仍异常。
首先,在数据库服务器本地尝试数据库端口、账号密码连接没问题。
然后,其它电脑远程访问,却异常时,这时得考虑云服务器管理上的问题,即比如阿里云的,你就到阿里云的控制台,进入相关云服务器详情,到防火墙一栏,
开通该SQL Server指定的那个端口就好了。注意,设置后,过个几十秒再尝试,应该就好了。
ASP.NET Core
Area视图里<environment include="Development"> 不起作用
ASP.NET Core mvc,在 Area 的 view 文件中,不能使用以下代码。
有可能异常的代码示例:
(本应该正常,参考:ASP.NET Core 中的环境标记帮助程序 | Microsoft Learn)
<environment include="Development">
<h1>Development</h1>
</environment>
<environment exclude="Development">
<h1>Not Development</h1>
</environment>
本地调试时,以上会同时起作用,不晓得原因。可以代替方案是在视图中使用依赖注入:
@inject IWebHostEnvironment HostEnvironment
@if (HostEnvironment.IsDevelopment())
{
<script src="/official/js/saying.js" asp-append-version="true"></script>
}
else
{
<script src="/official/js/minifier/saying.min.js" asp-append-version="true"></script>
}
Nuget包servicestack.redis报错
生成项目报错:ServiceStack.Redis 5.9.0提示必须引用ServiceStack.Redis.Interface 5.0.0。
电脑package文件夹确实已经下载了这个nuget包,代码也没问题,别的电脑上就好。
最后的解决办法是:
右击这个项目的ServiceStack.Redis Nuget,打开文件所在位置,将这些ServiceStack开头的文件夹删掉。然后重新生成项目。这样就会重新还原Nuget包,就好了。
JavaScript、Jquery
jquery对单选框radio设置选中,应使用prop()
JS,jquery对某个单选框设置选中与否,要用prop()而不是attr()比如:
$('input[name="IsPublic"]').prop('checked', false);
$.each()方法里 return false 只是用于跳出当前循环
如果表单数据提交前,想对某个列表数据来逐条检查,不通过提示一些信息,并阻止表单提交。
这时,如果用这个方法进行遍历检查,则 不通过时的return false ,只会跳出当前循环,并不会阻止循环外下的代码继续执行。
参考:jQuery 杂项 each() 方法 | 菜鸟教程 (runoob.com)
判断是否空数组得用length属性
在 JavaScript 中,使用 arr == [] 或 arr === [] 判断数组是否为空数组时返回 false,这是因为 JavaScript 中对象(包括数组)的比较是基于引用而非值。
jQuery的append、after
let $items=$(${v.el} .boxItem);
$items.eq(2) 与 $items[2] 是返回不同的结果,前者是jQuery对象,后者是原生dom。
对其后面追加元素时,如果是jQuery对象,要用eq,是原生dom(html),要用后者。
另外注意:jQuery 对 DOM 元素的 append 和 after 操作,具有“移动节点”的行为,而不是复制”。
layui
form表单里只能有一个应用 lay-submit 的按钮
版本2.5.6
如果表单里有多个按钮,那么只能有一个应用 lay-submit 属性,而且其它按钮必须设置 type="button",这样才不会出现意外的结果,比如每个按钮点击后都默认执行提交的逻辑,导致页面逻辑中途莫名关闭、浏览器地址栏url改变(携带表单key value),这他娘的就离谱了。
补充1,还有在form的submit方法里,最底下加上 return false
form.on('submit(outApproveSubmit)',function(){
//logic……
return false;//防止url携带表单参数跳转
})
补充2,当处理逻辑中出现异常时,也可能导致触发提交和浏览器地址栏url改变(携带表单key value)。可以用try catch检测下是否有未处理的异常信息。
持续更新……
更新于:2024.10.31

浙公网安备 33010602011771号