javascript - Angular 10 到 12 更新导致错误 Uncaught RangeError: Wrong length
问题描述
我刚刚将我的 Angular 应用程序从版本 10 升级到版本 12,当我运行“ng serve”时没有构建错误,但是在控制台中它给了我错误“未捕获的 RangeError:错误的长度!” 来自 _typed-buffer.js:157。在堆栈跟踪中,底部有 app-routing.module.ts:104 和 auth-guard.service.ts:12。我不知道如何克服这个错误。因此,没有任何应用程序加载。在 auth-guard.service.ts 第 12 行有
@Injectable()
export class AuthGuardService implements CanActivate {
constructor(private authService: AuthService, private router: Router, private location: Location) {}
我尝试更新到最新的节点和 npm 版本 14.17.0 和 7.13.0。我已经尝试过 ng update 并更新我所有的包。只是似乎无法克服这个错误。当我在谷歌上搜索这个错误和 Angular 12 时,并没有太多内容。有人遇到过这个问题吗?
解决方案
根据文档,从 angular 10 迁移到 angular 12 有一些变化与路由器有关,您可能需要手动解决
如果您使用路由器,relativeLinkResolution 的默认值已从旧版更改为更正版。如果您的应用程序以前通过未在 ExtraOptions 中指定值来使用默认值,并且在从空路径路由的子节点导航时使用相对链接,则您需要更新 RouterModule 的配置以专门为relativeLinkResolution指定 legacy 。有关更多详细信息,请参阅文档。
和
RouterLinkActive 的 routerLinkActiveOptions 属性现在具有更具体的类型。您可能需要更新访问此属性的代码以与更改保持一致。
和
在 Angular 路由器中,在 v4 中不推荐使用的用于 initialNavigation 的选项已被删除。如果您之前使用了 enabled 或 true,现在选择 enabledNonBlocking 或 enabledBlocking。
和
如果您以前使用 false 或 legacy_disabled,现在使用 disabled。在 Angular 路由器的 routerLink 中,preserveQueryParams 已被删除,请改用 queryParamsHandling="preserve"。
和
如果您正在访问 queryParams、fragment 或 queryParamsHandling 的 routerLink 值,您可能需要放宽输入以接受 undefined 和 null
在这里探索更多可能的事情
推荐阅读
- c++ - 在节点本机模块中链接boost库,需要替代库版本的目标文件
- jquery - jquery $(document).on("scroll") 禁用
- bash - 用于组合 3 个文件的 Shell 脚本
- javascript - 内容中包含 html 表格的 CSS 网格布局
- apache-spark - 在行内对 DataFrame 进行排序并获得排名
- security - 为什么 p_auth 验证在 Liferay 6 中不起作用?
- java - 没有“java.util.Set”类型的限定 bean
' 春季启动 2.0.2 - ios - 如何在 Xcode 中创建此文本字段?
- c++ - 为什么我们不能使用整数到字符串直接转换但可以按位到字符串?
- spring - 将 Spring Boot 从 2.0.0.RELEASE 更新到 2.0.2.RELEASE 破坏了 Spring Web?