到底错哪儿了?我遇到的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

posted @ 2023-05-20 12:15  AI大胜  阅读(27)  评论(0)    收藏  举报