未捕获的TypeError:无法读取undefined的属性'release'
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未捕获的TypeError:无法读取undefined的属性'release'相关的知识,希望对你有一定的参考价值。
嗨,大家好 !
我需要一些帮助。我想用特定的结构测试我的服务树。
我的测试看起来像:
describe(`Service selector`, () => {
describe(`getCurrentServiceTree`, () => {
it(`should build the generic service tree`, () => {
const services = [
'{http://namespace-example.fr/service/technique/version/1.0}Localpart0',
'{http://namespace-example.fr/service/technique/version/1.0}Localpart1',
'{http://namespace-example.fr/service/technique/version/2.0}Localpart2',
'{http://namespace-example.fr/service/technique/version/3.0}Localpart3',
'{http://namespace-example.fr/service/technique/version/3.0}Localpart4',
];
const expectedTree: TreeElement<any>[] = [
{
name: 'http://namespace-example.fr/service/technique/version/1.0',
children: [
{
name: 'Localpart0',
children: [],
isFolded: false,
cssClass: 'item-localpart',
},
{
name: 'Localpart1',
children: [],
isFolded: false,
cssClass: 'item-localpart',
},
],
isFolded: false,
cssClass: 'item-namespace',
},
{
name: 'http://namespace-example.fr/service/technique/version/2.0',
children: [
{
name: 'Localpart2',
children: [],
isFolded: false,
cssClass: 'item-localpart',
},
],
isFolded: false,
cssClass: 'item-namespace',
},
{
name: 'http://namespace-example.fr/service/technique/version/3.0',
children: [
{
name: 'Localpart3',
children: [],
isFolded: false,
cssClass: 'item-localpart',
},
{
name: 'Localpart4',
children: [],
isFolded: false,
cssClass: 'item-localpart',
},
],
isFolded: false,
cssClass: 'item-namespace',
},
];
const generatedStore: Partial<IStore> = {
services: {
byId: services.reduce(
(acc, name, index) => ({ ...acc, [`service${index}`]: { name } }),
{}
),
allIds: services.map((_, index) => `service${index}`),
isFetchingServices: false,
selectedServiceId: '',
},
};
expect(getCurrentServiceTree(generatedStore as any)).toEqual(
expectedTree
);
});
});
});
我不知道这是一个TypeScript问题,或者是否与RxJS相关..或者只是我的代码:(
当我把鼠标放到getCurrentServiceTree时,我有:
(别名)getCurrentServiceTree(state:IStore):TreeElement [] import getCurrentServiceTree
我不知道我是否正确使用Partial<T>
。
我无法输入generatedStore作为..
当我把鼠标放到时,我有:
[ts]类型'()=> any'的参数不能归因于'IStore'类型的参数。类型'()=>任何'中缺少属性'ui'。
export const getCurrentServiceTree = createSelector(
getSelectedWorkspaceId,
getServicesAllIds,
getServicesById,
(selectedWorkspaceId, servicesAllIds, servicesByIds): TreeElement<any>[] => {
const baseUrl = `/workspaces/${selectedWorkspaceId}/services`;
const servicesWithNspLocalpart = servicesAllIds.map(id => ({
...findNamespaceLocalpart(servicesByIds[id].name),
id,
}));
const groupedByNamespace = groupByNamespace(servicesWithNspLocalpart);
return groupedByNamespace.map(nspWithLocalparts => ({
name: nspWithLocalparts.namespace,
isFolded: false,
cssClass: `item-namespace`,
link: ``,
children: nspWithLocalparts.localparts.map(localpart => ({
name: localpart.name,
isFolded: false,
cssClass: `item-localpart`,
link: `${baseUrl}/${localpart.id}`,
children: [],
})),
}));
}
);
我想做什么? 有人可以解释我如何解决我的问题?
答案
我今天刚刚遇到了完全相同的错误。
一开始很不清楚错误的来源。
我做了什么调试:
- 而不是使用
ng test
(也许是无头)运行测试,不要使用无头模式,并使用参数--no-sourcemaps
启动它们 - 我在浏览器中有一个(稍微)更好的消息,至少告诉我哪个文件导致了问题
- 即使从那里,问题究竟在哪里并不明显,我发现
ng test
不报告圆形deps但ng serve
确实 - 从那里可以相当轻松地找到导致循环依赖的函数,我只需将其移动到另一个文件中(无论如何都更有意义)
以上是关于未捕获的TypeError:无法读取undefined的属性'release'的主要内容,如果未能解决你的问题,请参考以下文章
如何使用自定义错误消息捕获“TypeError:无法读取未定义的属性(读取'0')”?
VueJS:未捕获(承诺中)TypeError:无法读取未定义的属性“推送”
Vue:未捕获(承诺中)TypeError:无法读取未定义的属性'_c'
未捕获(承诺)TypeError:无法读取未定义的属性“长度”