JavaScript错误
本页提供了常见的JavaScript错误的解决方案,您可能会遇到,而与Telerik UI为Blazor组件工作。
Microsoft.JSInterop.JSException: Could not find…
您可能会在浏览器控制台中获得类似以下的运行时错误消息:
找不到“TelerikBlazor”。getLocationHost' ('TelerikBlazor'未定义)。
Microsoft.JSInterop.JSException:无法在'window'中找到'TelerikBlazor'。
错误:Microsoft.JSInterop.JSException:无法在'window.TelerikBlazor'中找到'initGrid'。
错误:无法在“窗口”中找到“TelerikBlazorPopup”。
- 通常,在JS代码中找不到涉及Telerik组件的错误。
如果你得到这样的错误,原因是我们需要的JS互操作文件缺失,或者它有一个不正确的版本。
不正确的版本
升级后,版本可能是错误的(因此,没有所有需要的功能),如果您使用我们的CDN来获取文件,并且它的路径没有更新到与包版本匹配。看到升级过程文章来更新路径。
另一个常见的原因是,如果文件来自静态资产,则浏览器会缓存该文件。清除浏览器缓存(或使用Ctrl
+F5
要刷新页面)修复它。真正的服务器应该查看这些文件的修改日期,并在升级后完全为它们提供服务,因此在生产环境中不应该发生这种情况,但是开发服务器更有可能返回“未修改”响应,即使在文件更新之后。
缺失的文件
您可以通过检查浏览器控制台的Network选项卡来检查情况是否如此,以查看它是否成功返回。有几个常见的原因导致JS互操作文件丢失:
应用程序缺少对所需的引用资产。
网络设置阻止访问云,从而阻止访问我们的CDN。如果是这种情况,您有两个选择:
- 与您的网络管理员讨论这种情况,以允许我们的CDN。
- 使用静态的资产从应用程序文件夹中删除,以避免进入云端。
应用程序从试用版升级到商业版,但文件的路径没有。看到从试用升级到商业节获取详细信息。
服务器项目上没有启用静态资产,或者托管环境不能很好地使用它们。您需要确保静态资产在构建之后和部署服务器上是可用的——它们位于本地NuGet缓存中,路径类似于
C:\Users\ <使用> \ .nuget \ \ telerik.ui.for.blazor包\ < theVersion > \ staticwebassets
。也有可能主机服务器不支持静态资产,或者它们存在问题,您可能需要与主机提供商确认这一点,或者通过使用具有静态资产的简单包进行测试,以查看它是否被返回。- 清除NuGet缓存,然后运行
清洁
和重建
如果在获取NuGet包时出现问题,解决方案可能会解决这个问题。以防清洁
不清理的箱子
和obj
文件夹,您也可以手动删除它们之前重建
。
- 清除NuGet缓存,然后运行
部署过程中出现问题。看到部署故障排除文章了解更多细节。
延迟属性
有时,JS互操作文件被正确引用并成功返回,但偶尔会出现错误。这表明一个时间问题(例如,低机器性能或慢网络),导致脚本加载和解析太晚,在需要之后。
一种解决方法是移除推迟
属性,我们在文档中添加了。
我们添加它是为了通过不让脚本成为阻塞资源来提高应用程序的性能。
使用代替
打印稿
默认情况下,TypeScript生成的编译代码需要出口
对象,默认情况下在Blazor中不可用,因此会抛出错误。一个常见的解决方法是定义一个空的出口
object)从Telerik JS互操作文件中导致错误。你可以阅读更多关于错误和解决方案TypeScript导出错误导致Telerik Blazor中断知识库文章。
无法读取null属性(读取'addEventListener')
这个JavaScript错误可能发生在WebAssembly (WASM)项目的Blazor UI更新之后。下面的文章提供了更多的细节和修复:
知识库:TypeError:无法读取null属性(读取'addEventListener')
对象不支持属性或方法“assign”
在IE下,您可能会得到类似的错误对象不支持属性或方法“assign”
或与IE不支持的其他现代JS功能相关的错误。原因是我们使用的现代代码可能无法在IE下工作-它不是一个我们支持的浏览器, WebAssembly无论如何也不能在IE上工作,所以现代Blazor应用程序无论如何都不能在IE上运行。