TypeError: 정의되지 않은 속성을 읽을 수 없습니다('id' 읽기).
단말기에 다음 오류가 있습니다.
TypeError: 정의되지 않은 속성을 읽을 수 없습니다('id' 읽기).
API 호출을 테스트하려고 하는데 오류가 나타납니다.
기능:
itemToForm = () => {
this.api.send(this.component, 'get',
{ lang: 'ES', filter: { id: this.item['id'] } }
).then(resEsp => {
this.item = resEsp['data'][0];
this.api.send(this.component, 'get',
{ lang: 'EN', filter: { id: this.item['id'] } }
).then(res => {
let itemEng = res['data'][0];
let fields = this.formDef.map(register => register.filter(
field => field['register_table'].indexOf('traduction') !== -1
).map(
field => field['field_name'])
).filter(register => register.length);
fields = fields.length ? fields[0] : [];
if (itemEng) {
this.item = Object.keys(itemEng).reduce((obj, key) => {
obj[key] = this.item[key];
if (fields.indexOf(key) !== -1) {
obj[key + '_eng'] = itemEng[key];
}
return obj;
}, {});
}
if (this.item) {
this.setForm();
}
})
})
}
내 사양 파일:
it('should call api.send', () => {
let spy1 = spyOn(api, 'send');
let item = {
id: 1,
name: 'test',
}
component.addItem(item);
component.itemToForm();
expect(spy1).toHaveBeenCalled();
});
무슨 일이 일어나고 있는 일:
함수itemToForm()
에 앞서 호출되고 있습니다.this.item
준비되었습니다.
이 에러를 회피하는 방법은 많이 있습니다.매우 간단한 방법은 다음과 같이 함수 시작 부분에 포수를 추가하는 것입니다.
itemToForm = () => {
if(this.item === undefined) {return}
// The rest of the code
}
데이터가 아직 존재하지 않으면 기능이 중지됩니다.
보다 우아한 솔루션은, 고객의 업무 순서를 한층 더 높여, 발신자를 특정하는 것입니다.itemToForm()
콜하기 전에 데이터가 존재하는지 확인합니다.
나는 이 질문에 부딪혔지만 내 문제는 전혀 다른 것이었다.
내 코드에는 어떤 이유로든
import { SOME_OBJECT } from '.';
대신 다음과 같이 해야 합니다.
import { SOME_OBJECT } from './proper-file';
로컬 npm 모듈을 설치하려고 하면 "Cannot read properties of undefined (reading 'spec')"라는 오류가 나타납니다.npm install [path to module here]
.
문제의 원인:패키지에 로컬 모듈 이름을 입력하지 않았습니다.json 파일.
제 경우도 오류는 비슷하지만 JavaScript 파일에서 body-parser 모듈을 사용하고 있었기 때문에 다른 솔루션이 나왔습니다.
덧붙여야만 했다
app.use(bodyParser.urlencoded({ extended: true }));
패키지에 스크립트 버전 오류가 있습니다.json 스크립트 버전을 다음과 같이 변경합니다.
"typescript" : "3.8.3"
npm 설치
언급URL : https://stackoverflow.com/questions/68959632/typeerror-cannot-read-properties-of-undefined-reading-id
'programing' 카테고리의 다른 글
람다를 사용하여 S3에서 데이터 읽기 (0) | 2023.02.25 |
---|---|
실행 중인 mongodb에 덤프를 복원하는 방법 (0) | 2023.02.25 |
Redx에서 상태를 업데이트한 후 콜백을 트리거하려면 어떻게 해야 합니까? (0) | 2023.02.25 |
문자열 배열을 ASP에 게시하려면 어떻게 해야 합니까?폼이 없는 NET MVC 컨트롤러 (0) | 2023.02.25 |
TypeScript 2.x, @types 및 시스템에서의 Angular 1.xJS - 글로벌 타이핑 사용 (0) | 2023.02.25 |