迁移到.NET Core 3.1后NToastNotify未定义与资源404错误如何解决?
问题解决步骤
两个报错为直接关联关系:/_content/NToastNotify/toastr.js 404导致nToastNotify全局对象未完成初始化,所以触发第二个未定义错误,按以下步骤排查修复即可:
1. 删除重复的组件调用
你的_Layout布局页的head标签和body末尾各调用了一次@await Component.InvokeAsync("NToastNotify"),删除head标签内的那次调用,仅保留body末尾、所有JS引用之后的那次即可。
2. 关闭组件内置静态资源注入并修正路径
你已经自行在项目中托管了toastr的CSS和JS文件,不需要组件从嵌入资源加载对应文件,修改ConfigureServices中AddNToastNotifyToastr的配置:
.AddNToastNotifyToastr(new ToastrOptions { ProgressBar = true, PositionClass = ToastPositions.BottomRight, TimeOut = (int)TimeSpan.FromSeconds(Configuration.GetValue<int>("Notifications:DefaultTimeoutSecs")).TotalMilliseconds, Title = string.Empty, TapToDismiss = true, NewestOnTop = true }, new NToastNotifyOption() { // 修正为你实际存放toastr资源的路径,原配置的/js/、/css/路径和实际引用路径不符 ScriptSrc = "/lib/toastr/toastr.min.js", StyleHref = "/lib/toastr/toastr.min.css", // 新增这行配置,关闭嵌入资源加载,就不会再输出/_content路径的脚本标签 DisableEmbeddedResources = true });
3. 验证本地静态文件存在
确认你的项目wwwroot/lib/toastr/目录下确实存在toastr.min.js和toastr.min.css两个文件,避免出现新的404错误。
4. 校验中间件顺序(可选)
你当前的中间件注册顺序是符合要求的:UseStaticFiles在UseNToastNotify之前,不需要调整。如果后续调整过中间件顺序,要保证静态文件中间件注册在NToastNotify中间件之前。
修改完成后清理浏览器缓存、重启项目即可解决报错。
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

