从 2 更新 angular4 版本后,编译时出现以下错误。
静态解析符号值时遇到错误。不支持函数调用。考虑将函数或 lambda 替换为对导出函数的引用
provideAuth({
tokenName: 'token',
tokenGetter: () => localStorage.getItem('token')
})
从 2 更新 angular4 版本后,编译时出现以下错误。
静态解析符号值时遇到错误。不支持函数调用。考虑将函数或 lambda 替换为对导出函数的引用
provideAuth({
tokenName: 'token',
tokenGetter: () => localStorage.getItem('token')
})
在分配之前尝试将令牌获取存储在变量上,如下所示:
public function(): void {
let token: string = localStorage.getItem('token');
provideAuth({
tokenName: 'token',
tokenGetter: token
});
}
这是因为您正在使用 AOT 编译进行编译(这是一件好事,但有一些限制)。
在这种情况下,这是因为 AOT 在提供程序设置中不支持 lambda 函数。请参阅AOT 文档。要修复它,只需将您的 lambda 替换为命名和导出的函数:
export function getToken() { localStorage.getItem('token'); }
然后引用它:
provideAuth({
tokenName: 'token',
tokenGetter: getToken
})
AOT 编译还有很多其他问题,其中许多都在此处列出:https ://medium.com/spektrakel-blog/angular-writing-aot-friendly-applications-7b64c8afbe3f
当然,您也可以通过省略命令中的参数来选择不使用AOT进行编译。但这将导致更大、更慢的应用程序。--aot
ng build