gpt4 book ai didi

Angular Aot 错误 - 如何使用对导出函数的引用替换函数

转载 作者:搜寻专家 更新时间:2023-10-30 21:59:21 26 4
gpt4 key购买 nike

我有这个代码

export function LocalStorage(key?: string) {
return WebStorage(localStorage, key);
}

export function WebStorage(webStorage: Storage, key: string) {
return (target: Object, propertyName: string): void => {
key = key || propertyName;

let storageKey = WebStorageUtility.generateStorageKey(key);
let storedValue = WebStorageUtility.get(webStorage, key);
...
Object.defineProperty(target, propertyName, {
get: function() { ... },
set: function(value: any) { .. },
});
}
};

当在 angular cli 上使用 --aot 标志构建项目时,如何解决以下错误。

ERROR in Error: Error encountered resolving symbol values statically. Function calls are not supported. Consider replacing the function or lambda with a reference to an exported function (position 15:12 in the original .ts file), resolving symbol WebStorage in the above file.

注意:position 15:12在上面的代码中是(target: Object, propertyName: string): void => {

在 Angular 组件中,LocalStorage 用作属性装饰器,例如

@LocalStorage() username: string = "";

最佳答案

不确定您是如何使用这个 WebStorage 的,它看起来像是一个奇怪的错误地方,但通常人们会按照错误消息的建议进行操作并提取函数。

因此您可以重构 WebStorage 函数并将内容提取为新的导出方法:

export function WebStorageInner(target: Object, propertyName: string) {
...
Object.defineProperty(target, propertyName, {
get: function() { ... },
set: function(value: any) { .. },
});
}

并在第一个中使用它:

export function WebStorage(webStorage: Storage, key: string) {
...
return WebStorageInner(target, propertyName);
};

关于Angular Aot 错误 - 如何使用对导出函数的引用替换函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47249712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com