Ng-lazyload-image: TypeError: 쀑간 λŒ€ μƒλ‹¨μ—μ„œ νŽ˜μ΄μ§€λ₯Ό λ‘œλ“œν•  λ•Œ μ •μ˜λ˜μ§€ μ•Šμ€ 'toLowerCase' 속성을 읽을 수 μ—†μŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2017λ…„ 07μ›” 18일  Β·  11μ½”λ©˜νŠΈ  Β·  좜처: tjoskar/ng-lazyload-image

μ•ˆλ…•ν•˜μ„Έμš”,

반쯀 μŠ€ν¬λ‘€ν•œ νŽ˜μ΄μ§€λ₯Ό λ‘œλ“œν•˜λŠ” 경우(맨 μœ„μ— μžˆλŠ” κ²½μš°μ™€ λΉ„κ΅ν•˜μ—¬) Nodeμ—μ„œ "TypeError: Cannot read property 'toLowerCase' of undefined" 였λ₯˜κ°€ λ°œμƒν•˜λŠ” 버그λ₯Ό λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. 지연 λ‘œλ“œλ₯Ό κ³„μ†ν•˜λ―€λ‘œ ν”ŒλŸ¬κ·ΈμΈμ΄ μ†μƒλ˜μ§€ μ•ŠλŠ” 것 κ°™μ§€λ§Œ 맨 μœ„λ‘œ λ‹€μ‹œ μŠ€ν¬λ‘€ν•  λ•ŒκΉŒμ§€ μƒˆλ‘œμš΄ onLoad 좜λ ₯ μ΄λ²€νŠΈκ°€ μ˜¬λ°”λ₯΄κ²Œ μ‹€ν–‰λ˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

μž¬μƒμ„± 방법: μƒλ‹¨μ—μ„œ ν…ŒμŠ€νŠΈ νŽ˜μ΄μ§€λ₯Ό μ •μƒμ μœΌλ‘œ λ‘œλ“œν•©λ‹ˆλ‹€. 절반 정도가 될 λ•ŒκΉŒμ§€ μ•„λž˜λ‘œ μŠ€ν¬λ‘€ν•©λ‹ˆλ‹€. 이제 νŽ˜μ΄μ§€λ₯Ό μƒˆλ‘œκ³ μΉ¨ν•˜κ³  쀑간뢀터 μŠ€ν¬λ‘€μ„ μ‹œμž‘ν•©λ‹ˆλ‹€. λ…Έλ“œ 였λ₯˜κ°€ ν‘œμ‹œλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. 그렇지 μ•Šμ€ 경우 onLoad 좜λ ₯ 이벀트λ₯Ό ν™œμš©ν•˜κ³  μžˆλŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€. 맨 μœ„λ‘œ μŠ€ν¬λ‘€ν•˜λ©΄ onLoad μ΄λ²€νŠΈκ°€ κ°‘μžκΈ° μž‘λ™ν•˜κΈ° μ‹œμž‘ν•˜λŠ” 것을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λͺ¨λ“  11 λŒ“κΈ€

μ•ˆλ…•ν•˜μ„Έμš”,

λ‚˜λŠ” 이것을 μž¬ν˜„ν•  수 μ—†λ‹€ :/
"ν…ŒμŠ€νŠΈ νŽ˜μ΄μ§€λ₯Ό μ •μƒμ μœΌλ‘œ λ‘œλ“œν•˜μ‹­μ‹œμ˜€"라고 말할 λ•Œ. https://tjoskar.github.io/ng-lazyload-image νŽ˜μ΄μ§€λ₯Ό μ˜λ―Έν•©λ‹ˆκΉŒ μ•„λ‹ˆλ©΄ npm start ν•˜μ—¬ λ‘œμ»¬μ—μ„œ νŽ˜μ΄μ§€λ₯Ό μ‹€ν–‰ν•©λ‹ˆκΉŒ?

μ–΄λ–€ λΈŒλΌμš°μ €λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

github.ioμ—μ„œ μ–΄λ–€ 이유둜 ν•œ 번 λ‘œλ“œν•œ ν›„ νŽ˜μ΄μ§€λ₯Ό μƒˆλ‘œ κ³ μΉ  수 μ—†μŠ΅λ‹ˆλ‹€. 맀번 404λ₯Ό 찾을 수 μ—†λ‹€κ³  λ‚˜μ˜΅λ‹ˆλ‹€ :(

κ·ΈλŸ¬λ‚˜ 일반적으둜 μ–΄λ–€ ν”„λ‘œμ νŠΈμ—μ„œλ“  λ‘œμ»¬μ—μ„œ μ˜λ―Έν•©λ‹ˆλ‹€. μ €λŠ” Universal 및 Node와 ν•¨κ»˜ Angular 4λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€(λ²”μš©μ΄ 이와 관련이 μžˆμ„ 수 있음). Windows 10용 Chrome 59 μ‚¬μš©. μƒˆλ‘œμš΄ onLoad κΈ°λŠ₯의 버그일 수 μžˆμ§€λ§Œ 긍정적인 것은 μ•„λ‹™λ‹ˆλ‹€. 였λ₯˜λŠ” λ…Έλ“œ μ½˜μ†”μ—λ§Œ ν‘œμ‹œλ˜λ©° Chrome μ½˜μ†”μ—λŠ” 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” @elitenick μž…λ‹ˆλ‹€ .
전체 μŠ€νƒ 였λ₯˜ 좔적을 μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

@tjoskar
λ‚˜λŠ” κ·Έ 였λ₯˜κ°€ https://github.com/tjoskar/ng-lazyload-image/blob/master/src/lazyload-image.ts#L75 와 관련이 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 전에 μ—¬κΈ°μ—μ„œ 였λ₯˜λ₯Ό μž‘μ„ 수 μžˆμ§€λ§Œ μ΄ν›„μ—λŠ” 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€.
Angular Universalμ—μ„œλŠ” μ—¬κΈ° https://github.com/tjoskar/ng-lazyload-image/blob/master/src/lazyload-image.ts#L47 μ—μ„œ μ„œλ²„μ˜ element κ°€ μ •μ˜λ˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.
문제의 μ•„μ£Ό 쒋은 해결책은 μ„œλ²„ μΈ‘μ—μ„œ lazy imgλ₯Ό λΉ„ν™œμ„±ν™”ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

github.ioμ—μ„œ μ–΄λ–€ 이유둜 ν•œ 번 λ‘œλ“œν•œ ν›„ νŽ˜μ΄μ§€λ₯Ό μƒˆλ‘œ κ³ μΉ  수 μ—†μŠ΅λ‹ˆλ‹€. 맀번 404λ₯Ό 찾을 수 μ—†λ‹€κ³  λ‚˜μ˜΅λ‹ˆλ‹€ :(

예, github이 λͺ¨λ“  μš”μ²­μ„ index.html둜 λ¦¬λ””λ ‰μ…˜ν•˜λŠ” 것을 μ§€μ›ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€(κ·ΈλŸ¬λ‚˜ μ΄λŠ” μ™„μ „νžˆ λ‹€λ₯Έ λ¬Έμ œμž…λ‹ˆλ‹€)

μ•„λ§ˆλ„ Angular Universalκ³Ό 관련이 μžˆμ„ 수 μžˆμ§€λ§Œ 이해할 수 μ—†λŠ” λͺ‡ 가지 사항이 μžˆμŠ΅λ‹ˆλ‹€.

  1. νŽ˜μ΄μ§€λ₯Ό μƒˆλ‘œ κ³ μΉ  λ•Œλ§Œ 였λ₯˜κ°€ λ°œμƒν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ? λ…Έλ“œλŠ” 슀크둀 μœ„μΉ˜ λ˜λŠ” 첫 번째 λ˜λŠ” 두 번째 방문인지에 λŒ€ν•œ 정보λ₯Ό 얻지 μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€(λ°±μ—”λ“œμ—λŠ” κ·ΈλŸ¬ν•œ μ’…λ₯˜μ˜ μƒνƒœκ°€ μ—†μ–΄μ•Ό 함).
  2. 문제의 원인 이 이 ν–‰ 이라고 κ°€μ •ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ nodeName μ—μ„œ element 였λ₯˜ 없이 μ•‘μ„ΈμŠ€ν•˜κ³  있고 λ˜ν•œ isVisible() μ—μ„œ element λ₯Ό μ‚¬μš©ν•˜κ³  있기 λ•Œλ¬Έμ— element λ₯Ό μ •μ˜ ν•΄μ œν•  수 μ—†μŠ΅λ‹ˆλ‹€. 그리고 μš°λ¦¬λŠ” κ·Έ ν•¨μˆ˜μ—μ„œ window λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이것은 μ„œλ²„ μ»¨ν…μŠ€νŠΈμ—μ„œ μ •μ˜λ˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€.

λ‚˜λŠ” 이것이 μƒˆλ‘œμš΄ onLoad κΈ°λŠ₯의 버그일 수 μžˆλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ 긍정적인 것은 μ•„λ‹™λ‹ˆλ‹€.

(onLoad) μž…λ‹ˆκΉŒ? 제거λ₯Ό μ‹œλ„ν•˜κ³  였λ₯˜λ₯Ό μž¬ν˜„ν•  수 μžˆλŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆκΉŒ?

@rimlin

문제의 μ•„μ£Ό 쒋은 해결책은 μ„œλ²„ μΈ‘μ—μ„œ lazy imgλ₯Ό λΉ„ν™œμ„±ν™”ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

예, μ„œλ²„μ—μ„œ 이미지λ₯Ό 지연 λ‘œλ“œν•˜λŠ” 것은 μ˜λ―Έκ°€ μ—†μŠ΅λ‹ˆλ‹€(ν™”λ©΄ 크기에 λŒ€ν•΄ 아무것도 λͺ¨λ₯΄κΈ° λ•Œλ¬Έμ—).
μ–΄μ©Œλ©΄ μš°λ¦¬λŠ” μΆ”κ°€ ν•  수 μžˆμŠ΅λ‹ˆλ‹€ if (isPlatformServer(this.platformId)) return; ( μ‹¬νŒ 에) ngAfterContentInit .

@elitenick , 방금 @rimlin pull μš”μ²­μœΌλ‘œ [email protected] λ₯Ό κ²Œμ‹œν–ˆμŠ΅λ‹ˆλ‹€ . μ„€μΉ˜ν•˜κ³ ( npm install [email protected] ) λ¬Έμ œκ°€ ν•΄κ²°λ˜λŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆκΉŒ?

ν™•μ‹€νžˆ! 였늘 ν™•μΈν•΄μ„œ μ•Œλ €λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€! κ³ λ§ˆμ›Œ μ–˜λ“€μ•„.

ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€! 정말 κ°μ‚¬ν•©λ‹ˆλ‹€!! λ™μΌν•œ μ‹œλ‚˜λ¦¬μ˜€λ₯Ό μ—¬λŸ¬ 번 μž¬ν˜„ν–ˆμœΌλ©° 더 이상 λ…Έλ“œ 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 그리고 Angularκ°€ μ‹œμž‘λ˜λ©΄ 지연 λ‘œλ”©μ΄ 계속 μž‘λ™ν•©λ‹ˆλ‹€.

[email protected] λ©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰