μ΄ μ€λ₯λ μ±μ΄ νμ±νλμ΄ μ μ λμ μ€ν λ νμ λ§ ββλ°μνμ¬ μ¬μ©μκ° μ¬λ¬ κ²½λ‘λ₯Ό νμ ν μμλ κΈ°νλ₯Ό μ 곡ν©λλ€. μ¬ννκΈ°κ° λ§€μ° μ΄λ ΅κ³ μ μ νμ "κ·Έλ₯ μΌμ΄λ"κ²μ²λΌ 보μ λλ€. νλ‘λμ λΉλ (ember.min.js)λ₯Ό μ¬μ©νμ¬ λͺ λ² μ¬ν ν μ μμμ§λ§ λλ²κ·Έ λΉλ (ember.debug.js)λ μ¬μ©νμ§ μμμ΅λλ€.
λ€μμ μ€νμ λλ€.
"Cannot read property '_lookupFactory' of undefined"
TypeError: Cannot read property '_lookupFactory' of undefined
at i (https://qa-integration.batterii.com/assets/vendor-69da94618271be1c4338db3f0e942865.js:7:2712)
at o (https://qa-integration.batterii.com/assets/vendor-69da94618271be1c4338db3f0e942865.js:7:2833)
at Object.a [as default] (https://qa-integration.batterii.com/assets/vendor-69da94618271be1c4338db3f0e942865.js:7:2888)
at Object.i [as subexpr] (https://qa-integration.batterii.com/assets/vendor-69da94618271be1c4338db3f0e942865.js:6:4717)
at a (https://qa-integration.batterii.com/assets/vendor-69da94618271be1c4338db3f0e942865.js:15:16476)
at i (https://qa-integration.batterii.com/assets/vendor-69da94618271be1c4338db3f0e942865.js:15:16302)
at n (https://qa-integration.batterii.com/assets/vendor-69da94618271be1c4338db3f0e942865.js:15:16189)
at Object.r [as acceptHash] (https://qa-integration.batterii.com/assets/vendor-69da94618271be1c4338db3f0e942865.js:15:16075)
at n (https://qa-integration.batterii.com/assets/vendor-69da94618271be1c4338db3f0e942865.js:15:26102)
at Object.a.inline (https://qa-integration.batterii.com/assets/vendor-69da94618271be1c4338db3f0e942865.js:15:26664)
κ·Έκ²μ lookup-helper λ₯Ό κ°λ¦¬ν€λ κ² κ°μ΅λλ€. μ€λ¨ μ μμ μ΄κ²μ μ‘μλ§νΌ μ΄μ΄ μ’μλ μ μ λͺ λ²μ΄κ³ μΆμ λ owner
λ§€κ° λ³μκ° μ μλμ§ μλ κ²μ λͺ©κ²©νμ΅λλ€. λλ¨Έμ§ env
μ μ ν ν΄ λ³΄μ
λλ€. 보λ€:
λλ κ·Έκ²μ΄ κ³μ λ κ²μ΄ κ±°μ μλ€λ κ²μ μκ³ μμ΅λλ€. μ΄κ²μ μ¬ννλ μ¬μ΄ λ°©λ²μ μ°Ύμ§ λͺ»νμ§λ§, μ΄κ²μ λλ²κΉ νλ λ° λμμ΄ λ μ€νμ λν μΆκ° μ λ³΄κ° μμ΅λκΉ?
λ μ΄μν μ μ λ§μ§λ§ μ€ν¬λ¦° μ·μμ λ³Ό μ μλ€λ κ²μ
λλ€. 8786 νμ var s = "helper:" + e;
κ° μμ΅λλ€ ...νμ§λ§ λ°λ‘ λ€μ νμ s
κ° μ μλμ΄ μμ§ μμ΅λλ€. : confused : λ§μΉ μ€νμ΄ μ§λ£¨ν΄ μ§κ±°λ ... λλ ν¬λ‘¬ λλ²κ±°κ° νλ¦° κ²μ²λΌ 보μ
λλ€.
λλ μ΄λ° κ±Έ λ³Έ μ μ΄μλ€. λλ¬Όκ² λ°μνλ©° λ²μνλ λ°©λ²μ λͺ¨λ¦ λλ€. λν λ΄ μ±μ λ¬Έμ μΈμ§ λ€λ₯Έ κ²μΈμ§ νμ€νμ§ μμ΅λλ€.
@raido λ λ΄ μ€νκ³Ό λμΌ _lookupFactory
)? Ember 2.4.1μ μ¬μ©νκ³ κ³μλκΉ? μ΄μ λ²μ μ emberμμμ΄ λ¬Έμ λ₯Ό λ³Έ μ μ΄ μμ΅λκΉ?
μ°λ¦¬λ Ember 2.2 => Ember 2.4μμ μ κ·Έλ μ΄λνκ³ λ©°μΉ μ΄λ΄μ μλ² λ‘κ·Έμμμ΄ λ¬Έμ λ₯Ό μλΉν λ§μ΄λ³΄κΈ° μμνμ΅λλ€.
: +1 : μ΄κ²μ μ§μ 보μκ³ , λ²κ·Έ μ€λ΄κ·Έ λ‘κ·Έμμ μ λ₯Ό νΌλμ€λ½κ²νμ΅λλ€ :
11779 if (validateLazyHelperName(name, owner, env.hooks.keywords)) {
11780 var helperName = 'helper:' + name;
11781 if (owner.hasRegistration(helperName, options)) {
11782 helper = owner._lookupFactory(helperName, options);
11783 }
11784 }
11785 }
λΉμ μ΄ λ§νλ κ²μ²λΌ, μ΄λ»κ² owner
μ undefined
λΌμΈμ 11782
κ° κ³Όκ±° κ°μ§κ³ μλ κ²½μ° owner.hasRegistration
μ μ λΌμΈ?
λ§μ°¬κ°μ§λ‘ μΆμ λ κ²½μ°μλ§ νλ‘λμ μμ λ³Ό μ μμ΅λλ€ (μλ μμ€ λ§΅μμ κ°μ Έμ¨ κ²μ).
λ‘κ·Έμ λ°λ₯΄λ©΄ μ§κΈκΉμ§ Chromeμμλ§ λ³Έ μ μ΄ μμ΅λλ€.
@workmanw μ, λ΄ μ€λ₯λ _lookupFactoryμ κ΄λ ¨μ΄ μμΌλ©° stacktraceμμ lookupHelperλ₯Ό μ°Έμ‘°νμμμ€.
νλ‘λμ λΉλμ λ‘κ·Έ, λ°©κΈ v2.3.0μμ λ°μνμ΅λλ€.
TypeError: Cannot read property '_lookupFactory' of undefined
at o (vendor-6292d0672068025de3c6d57c1fb505d0.js:7)
at Object.a [as default] (vendor-6292d0672068025de3c6d57c1fb505d0.js:7)
at Object.r [as lookupHelper] (vendor-6292d0672068025de3c6d57c1fb505d0.js:6)
at Object.D [as inline] (vendor-6292d0672068025de3c6d57c1fb505d0.js:16)
at Object.i.inline (vendor-6292d0672068025de3c6d57c1fb505d0.js:16)
at l.populateNodes (vendor-6292d0672068025de3c6d57c1fb505d0.js:16)
at l.render (vendor-6292d0672068025de3c6d57c1fb505d0.js:16)
at i (vendor-6292d0672068025de3c6d57c1fb505d0.js:16)
at vendor-6292d0672068025de3c6d57c1fb505d0.js:16
at s (vendor-6292d0672068025de3c6d57c1fb505d0.js:16)
2.4.2μμμ΄ λ¬Έμ λ₯Ό νμΈν μ μλλ°, μμ§ κ°λ°μμλ λ³Ό μμλ κ²½μ°λ μμ§λ§ νλ‘λμ μμλ λ³Ό μ μμ΅λλ€. μ΄κ²μ λΆμ¨ κ²μ¬μμ μν΄ λ°μν μ μμ΅λκΉ?
μμΈν μ 보 : 2.3.xμμλμ΄ κΈ°λ₯μ΄ μμμΌλ©° μ€νμ λμΌν©λλ€ (_lookupFactory).
νΈμ§ : μ΄κ²μ΄ λΆμ¨ κ²μ¬μ λ¬Έμ κ° μλλΌλ κ²μ νμΈν μ μμΌλ©° κ²μ¬μκ° λΉνμ±ν λ λμ μ€λ₯κ° λ°μνμ΅λλ€.
2.4.1 λ° 2.4.2μμ λ²κ·Έλ₯Ό νμΈνμ΅λλ€. μΆμ λ jsμμλ§ λ°μν©λλ€.
@jcbvm @ gdub22 λ λ€ μΌκ΄λκ² μ¬ν ν μ μμμ΅λκΉ? λΆμ¨ νμ μ λ§λ€κΈ° μν΄ μ±μμ μ μ΄λ μΌκ΄λ λ¨κ³λ₯Ό μ°ΎμΌλ €κ³ λ Έλ ₯νμ§λ§ μ΄μ΄ μμμ΅λλ€.
μ΄κ²μ μμ ν μΌν μ μ΄λ©° μλ§λ λΆμ μ²μ΄ μΌ μλ μμ§λ§, μ»΄ν¬λνΈ ν¬νΌ ( {{component componentName}}
)λ‘ λ λλ§ λ μ‘°μ μ»΄ν¬λνΈκ°μλ ν¬νΌλ₯Ό λ λλ§νλ €κ³ ν λ λ°μνλ κ² κ°μ΅λλ€.
@workmanw λ§μ°¬κ°μ§λ‘ μΌκ΄λκ² μ¬ν ν μ μμκΈ° λλ¬Έμ μ± μ 체μμ {{component}}
λμ°λ―Έλ₯Ό λ§μ΄ μ¬μ©ν©λλ€.
@workmanw λ 100 % μΌκ΄λμ§ μμ§λ§ μ체 ν νλ¦Ώμμ κ΅¬μ± μμ λμ°λ―Έλ₯Ό μ¬μ©νλ νΉμ κ΅¬μ± μμλ‘ λ²μλ₯Ό μ’νλ€ κ³ μκ°ν©λλ€.
Uglifyλ μμ ν¨μλ₯Ό λ€μκ³Ό κ°μ΄ λ³νν©λλ€.
function n(e,t,r,n){
var i=r.helpers[e];
if(!i){
var o=r.owner;
if (a(e,o,r.hooks.keywords)){
var s="helper:"+e;
o.hasRegistration(s,n) && (i=o._lookupFactory(s,n));
}
}
return i;
}
owner
μ λν λ μμ± μ‘μΈμ€κ° λͺ¨λ λ¨μΌ νμΌλ‘ μ»΄νμΌλμμ΅λλ€. μ μκ°μλ μΆ©λμ΄ μ€μ λ‘ μ²« λ²μ§Έμμ λ°μνκ³ μμ€ λ§΅ μΆ©μ€λκ° μ¬λ°λ₯΄κ² ꡬλ³νκΈ°μ μΆ©λΆνμ§ μλ€λ κ²μ
λλ€.
μΆκ° νΈμ§ : μ,νμ§λ§ μΆ©λμ νμ€ν _lookupFactory property
μ λν κ²μ΄λ―λ‘ λ΄ μΆμΈ‘μ΄ μλͺ»λμμ κ²μ
λλ€. νΈκΈ°μ¬ λ§κ³ νΈκΈ°μ¬ λ§μ.
@ ef4 μλ§λ ...νμ§λ§ λλ²κ±° μμμ΄ μμΈλ₯Ό λͺ λ² λ°κ²¬νμ§λ§ o
(μ€ λν«μμ)λ μ μλμ§ μμμ§λ§ r.owner
μ μ ν¨ν μμ μμ
λλ€. μ¬μ€, μ λ r.owner.hasRegistration(s,n) && (r.owner._lookupFactory(s,n));
νκ³ μμ
μλ°μ μ μμ΅λλ€. μ΄λ Chromeμ΄ μμΈλ₯Ό ν¬μ°©νμ¬ μ€λ¨ λ μ΄νμ΄λ―λ‘ λλ²κ±°κ° μ€ν΄μ μμ§κ°μλ μν μΌ μλ μμ΅λλ€.
@ ef4 μ, νμ€ν μ΄μν κ²μ λλ€.
μ΄λ€ μ΄μ λ‘ V8μ΄μ΄λ₯Ό μ΅μ ν ν μ μμ΅λκΉ? V8, @stefanpenner μ λ€ν¬ μνΈμ λν΄ κ°μ₯ μ μλ μ¬λμ λꡬμΌκΉμ?
μΆ©λνλ λΌμΈ μ½λκ° λ€μκ³Ό κ°μ κ²½μ° :
o.hasRegistration(s,n) && (i=o._lookupFactory(s,n));
κ·Έλ:
o.hasRegistration(s,n)
μ (λ) μ΄λ―Έ μ§μ€ κ°μ λ°ννμ΅λλ€. μ΄κ²μ μλ―Έo
λ null
λλ undefined
κ° μλλλ€. λ°λΌμCannot read property '_lookupFactory' of undefined
κ° μλͺ»λμκ±°λ v8μ λ²κ·Έμ
λλ€.λλ λͺ λ°±ν κ²μ λμΉκ³ μμ΅λκΉ?
μ΄ λ¬Έμ λ₯Ό μ¬ν ν μ¬λλ€μ μν΄ μ΄λ€ λ²μ μ Chromeμ μ€ννκ³ μμ΅λκΉ? Firefox, IE λλ Safariμμ μ¬ν νμ΅λκΉ?
@wycats λλ λΉμ μ΄ λμΉ λͺ λ°±ν κ²μ λ³΄μ§ λͺ»ν©λλ€. μ΄κ²λ€μ λ΄κ° λλ¬ ν κ²κ³Ό κ°μ κ²°λ‘ μ λλ€. μ΄ λ¬Έμ λ Chrome μ΅μ λ²μ (48)μμλ§ κΈ°λ‘λμμ΅λλ€. μ¬μμ° ν μ€νΈμμ 48.0.2564.116μ μ¬μ©νμ΅λλ€. κ°μΈμ μΌλ‘ Firefox, IE λλ Safariλ μ¬μ©νμ§ μμμ§λ§ λ€μ μλν΄λ³΄κ³ λ³΄κ³ νκ² μ΅λλ€.
νΈμ§ : λλ νΈμλ€μ μμ±νλ μ§μ κΉμ§ λ¬Έμ λ₯Ό λ¨μν ν μ μμ΅λλ€. νμ§λ§ λμμ΄λλ€λ©΄ μ€λ¨ μ μμ μΌμ μ€μ§ λ νλ μ΄μμ μ€λ₯λ₯Ό λκΈ°μ΄μ μΆκ°νκ³ λκ΅°κ° ν¬λ‘¬ λλ²κ±°λ₯Ό λλ¬λ³΄κ³ μΆλ€λ©΄ μ€ν¬λ¦° νμ΄λ‘λ‘ μ΄λν μ μμ΅λλ€. λλ‘λ 1 λΆμ 3 λ² μ¬ν ν μ μμ΅λλ€. λλ‘λ 20 λΆ μ΄μ μμλ©λλ€.
@wycats μκ² μ΅λλ€. μ§λ 1 μκ° λμ Chrome, Safari λ° Firefoxλ₯Ό μ¬μ©ν΄ 보μμ΅λλ€. Chromeμμλ μ¬λ¬ λ² μ¬ν ν μ μμμ§λ§ Safariμ Firefoxμμλ μ ν μ¬ν ν μ μμμ΅λλ€. μ΄κ²μ΄ κ²°μ μ μΈμ§ νμ ν μ μμ§λ§ Chrome νΉμ λ¬Έμ λ₯Ό μ μ λ λ§μ΄ κ°λ¦¬ν€κ³ μμ΅λλ€.
μ΄ λͺ¨λ κ²μ΄ http://yehudakatz.com/2010/01/02/the-craziest-fing-bug-ive-ever-seen/μ μκΈ°μν΅λλ€.
λλ μ¬ν ν μ μμμ΅λλ€. μ μκ²λ μΌλ°μ μΌλ‘ μ±μ΄ λΆν λ λ λ°μν©λλ€. μ±μ μ¬λ¬ λ² λ€μλ‘λνλ©΄ μΆ©λμ΄ λ°μν μ μμ§λ§ μΌκ΄μ±μ΄ μμ΅λλ€. λ¨ λͺ λΆλ§μ 5 λ² μΆ©λνκ±°λ 30 λΆ μ λ 걸릴 μ μμ΅λλ€. μ΅μ Chromeμμ ν μ€νΈνμ΅λλ€.
@workmanw ν΄λΉ κΈ°λ₯μ νΉμ λͺ¨λλ‘ μ μ§νλ κ²μ΄ μ’μ΅λλ€. κ·Έλ¬λ©΄ λ¬Έμ μ λν΄ μμΈν μμλ³Ό μ μμ΅λλ€. μ΄ μμ μμ μ°λ¦¬λ v8 μΉκ΅¬λ€λ νν΄μΌν©λλ€. κ·Έλ¬λμ΄λ₯Ό μν΄μλ 볡μ (μ¬μ§μ΄ μ 체 μ±)κ° νμν κ²μ λλ€.
νΉμ λͺ¨λμμ κΈ°λ₯μ μ μ§νλ €λ©΄ v8μ μΌλΆλ₯Ό μ²μ²ν λΉνμ±ννκ³ λ²κ·Έκ° μ€μ§λλμ§ νμΈν μ μμ΅λλ€. κ·Έλ¬λ©΄ κ·Όλ³Έ μμΈμ λ κ°κΉμ΄ λ€κ° κ° μ μμ΅λλ€.
λ¨Όμ ν¬λ‘¬ v8μ λΉνμ±ν ν μνλ‘ μ€ννμ¬ μΈλΌμΈμ λΉνμ±νν©λλ€. --nouse_inlining
(λ΄ μκ° μ μ΄κ²μΌλ‘ μΆ©λΆν μ μμ΅λλ€)
/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --js-flags="--nouse_inlining" --user-data-dir=/tmp/foobar
λ°λλ‘ ν¬λν¬ μ€ννΈλ₯Ό λͺ¨λ ν¨κ» λΉνμ±ννμμμ€ --crankshaft=false
/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --js-flags="--crankshaft=false" --user-data-dir=/tmp/foobar
μλ νμΈμ.
μΉ΄λ리μκ° μλ Chrome 48μ μ¬μ©νμ¬ ν μ€νΈνμ΅λλ€. μΉ΄λ리μμ ν¨κ» ν΄λ³΄μκΈΈ λ°λΌμλ©΄ κΈ°κΊΌμ΄ λμ λλ¦¬κ² μ΅λλ€.
ν¨κ» --nouse_inlining
λλμ΄ λ¬Έμ λ₯Ό μ¬ν ν μ μμ΅λλ€.
ν¨κ» --crankshaft=false
λλμ΄ λ¬Έμ λ₯Ό μ¬ν ν μ μμλ€.
μ΄ μμ μμ μ°λ¦¬λ v8 μΉκ΅¬λ€λ νν΄μΌν©λλ€. κ·Έλ¬λμ΄λ₯Ό μν΄μλ 볡μ (μ¬μ§μ΄ μ 체 μ±)κ° νμν κ²μ λλ€.
λλ μμ ν μ΄ν΄ν©λλ€. λλ μ½ 4 μκ°μ "μ μ§"νκ³ μ΄κ²μ μ¬ννλ Ember-twiddleμ λ§λ€κΈ° μν΄ λ Έλ ₯νμ΅λλ€. λλ κ·Έκ²μ μν΄ λ¬΄μ¨ μΌμ΄ λ²μ΄μ§κ³ μλμ§ μΆ©λΆν μ΄ν΄νμ§ λͺ»ν©λλ€. μ΄μ λ 볡μ λ¨κ³λ₯Ό μ€μ΄κ³ κ°λ₯ν ν λ§μ΄ μ±μμ μΆμΆνμ¬ λ³΅μ λ₯Ό λ¨μννκΈ° μν΄ μ±μ μ¬μ©νμ¬ "κ±°κΎΈλ‘ μμ "μ μμνκ² μ΅λλ€.
--nouse_inliningμΌλ‘μ΄ λ¬Έμ λ₯Ό μ¬ν ν μ μμμ΅λλ€.
μμλλ κ²μ²λΌ 보μ΄λ―λ‘ μΈλΌμΈ λ²κ·Έμ κ΄λ ¨μ΄μμ κ°λ₯μ±μ΄ κ°μ₯ λμ΅λλ€.
--crankshaft = falseλ₯Ό μ¬μ©νλ©΄μ΄ λ¬Έμ λ₯Ό μ¬ν ν μμμμ΅λλ€.
μ΄κ²μ μλͺ»λ νλκ·Έ μΌ μ μμ΅λλ€. κΈ°μ΅μ΄ λμ§ μμ΅λλ€.
λλ μμ ν μ΄ν΄ν©λλ€. λλ μ½ 4 μκ°μ "μ μ§"νκ³ μ΄κ²μ μ¬ννλ Ember-twiddleμ λ§λ€κΈ° μν΄ λ Έλ ₯νμ΅λλ€. λλ κ·Έκ²μ μν΄ λ¬΄μ¨ μΌμ΄ λ²μ΄μ§κ³ μλμ§ μΆ©λΆν μ΄ν΄νμ§ λͺ»ν©λλ€. μ΄μ λ 볡μ λ¨κ³λ₯Ό μ€μ΄κ³ κ°λ₯ν ν λ§μ΄ μ±μμ μΆμΆνμ¬ λ³΅μ λ₯Ό λ¨μννκΈ° μν΄ μ±μ μ¬μ©νμ¬ "κ±°κΎΈλ‘ μμ "μ μμνκ² μ΅λλ€.
@workmanw μ¬ν λ¨κ³μμμλ κ·Έλλ‘ μ± (λλ μ±μ URL)μ 곡μ ν μ μμ΅λκΉ?
νμ€μ μΌλ‘ μ΄κ²μ λΆλ¦¬νμ¬ μ¬ννλ κ²μ κΉλ€λ‘μΈ μ μμ΅λλ€.
A : sadpanda : ν΄κ²° λ°©λ²μ ν¨μκ° μΈλΌμΈ λ μμλ μ΅λ ASTλ₯Ό μ΄κ³Όνλλ‘νλ κ²μ λλ€. μ΄λ κ²νλ©΄ λ€μμ μν ν μ μμ΅λλ€.
ν΄λΉ ν¨μ μ λ³Έλ¬Έμ λ€μ λ¬Έμμ΄μ λ£μΌλ©΄ νΈλ¦μ μνν΄μΌν©λλ€ (νμ¬ μ΄λ¬ν μ ν / ν΄λ¦¬μ€ν±μ μ΄κ³Ό 근무 μκ°μ λ³κ²½λ¨).
"Pork chop porchetta rump, bacon turducken filet mignon tri-tip drumstick picanha beef ribs sausage salami. Leberkas beef landjaeger bresaola, sausage meatloaf pastrami frankfurter ribeye jowl turducken drumstick flank. Pork loin shank tongue leberkas ham strip steak salami swine short ribs cupim. Strip steak sausage turkey tenderloin, alcatra turducken porchetta ribeye brisket spare ribs rump salami ground round tail frankfurter. Kielbasa cow porchetta, hamburger jowl salami turducken capicola beef. Corned beef meatloaf ball tip landjaeger shank pork belly. Short loin kielbasa pig tail, brisket cupim salami andouille hamburger sausage short ribs."
@workmanw λ μΉ΄λ리μλ₯Ό νμΈν μ μλ€λ©΄ νΈλ¦¬ν©λλ€.
μλ νμΈμ.
κ·Έ ν¨μμ λ€μ λ¬Έμμ΄μ λ£μΌλ©΄ νΈλ¦μ μνν΄μΌν©λλ€ (μ§κΈ λΉμ₯μ μ΄κ³Ό 근무λ₯Ό λ³κ²½ν μ μμ΅λλ€)
λ΄λΆμ λν λΉμ μ μ§μμ λλ₯Ό λλΌκ²νμ§ μμ΅λλ€.
@workmanw μ¬ν λ¨κ³λ‘ μ±μμλ κ·Έλλ‘ κ³΅μ ν μ μμ΅λκΉ?
λ€, κ·Έλ κ² ν μ μμ΄μΌν©λλ€. μ‘°κΈλ§ μ£Όλ©΄ μ¬μ νλ‘λμ νκ²½ μ€ νλμ λͺ κ°μ§ μ격 μ¦λͺ μ νλ‘λΉμ λνκ³ λ°μ΄ν°λ₯Ό μ€λΉν©λλ€. νμν κ²½μ° μμ€λ₯Ό 곡μ ν΄λλμ§λ§ κ°μΈμ μΌλ‘ 곡μ ν΄μΌν©λλ€.
@workmanw λ μΉ΄λ리μλ₯Ό νμΈν μ μλ€λ©΄ νΈλ¦¬ν©λλ€.
λλ. νλκ·Έμμ΄ μΉ΄λ리μ "λ²μ 51.0.2673.0 μΉ΄λ리μ (64 λΉνΈ)"λ₯Ό νμΈνμ§λ§ μνκΉκ²λ μ¬μ ν μ¬ν ν μμμμ΅λλ€.
νμν κ²½μ° μμ€λ₯Ό 곡μ ν΄λλμ§λ§ κ°μΈμ μΌλ‘ 곡μ ν΄μΌν©λλ€.
보μ₯μ μμ§λ§ κ°μΈμ μΌλ‘ λ¬Έμ λ₯Ό λ μ€μ΄κ³ μ€μ΄λ λ° λμμ΄ λ κ²μ λλ€. μ λ λ€μκ³Ό κ°μ μΌμνκ³ μΆμ΅λλ€.
λ΄ μμμλ μ± (μ½λλ₯Ό λ³κ²½νκ³ νμ ν μμλ κ³³)μ μ¬μ©νλ©΄ μ μ ν ν΄κ²° λ°©λ² / μ¬μμ°μ΄ κ°λ₯ν μ μμ΅λλ€.
νΈμ§ : μλ λ§ν¬ λ μμ© νλ‘κ·Έλ¨μ PR # 13118μ ν΄κ²° λ°©λ²μ΄ ν¬ν¨ λ ember λΉλλ₯Ό μ¬μ©νκ³ μμ΅λλ€. μ΄ λ¬Έμ μ 볡μ μλ λ μ΄μ μ ν¨νμ§ μμ΅λλ€. μ°λ¦¬ μ±μ μ¬μ©νμ¬μ΄ λ¬Έμ λ₯Ό μ¬ννλ λ° κ΄μ¬μ΄μλ μ¬λμ΄ μμΌλ©΄ μ μκ² μ°λ½νλ©΄ μλ§λ κ·Έλ κ² ν μ μμ΅λλ€.
@stefanpenner κ·Έλμ νμ΄μ§μ μΌλΆ μ½λλ₯Ό μ½μ νμ¬ λ³΅μ μμ μ μννμ΅λλ€. μ λ₯Ό λ―ΏμΌμμμ€. κ·Έλ μ§ μμΌλ©΄ μ λͺ½μ΄μμ κ²μ λλ€.
μ΄κ²μ μ¬μ ν ββ100 % μ¬ν ν μ μμ΅λλ€.
1)μ΄ URL λ°©λ¬Έ : https://qa-integration.batterii.com/#/community/MTpDb21tdW5pdHksOTAwMQ/room/MTpSb29tLDE5NzQ2MzAwMQ/wall/MTpSb29tLDE5NzQ2MzAwMSxXYWxsLDEwMDAx
2) μ΄λ©μΌλ‘ λ‘κ·ΈμΈ : [email protected]
λ° λΉλ°λ²νΈ : tomster1
. κ·Έλ¬λ©΄ λ€μκ³Ό κ°μ νμ΄μ§λ‘ λ₯ λ§ν¬λ©λλ€.
3) λ‘κ·ΈμΈνμ¬ μ νμ΄μ§μ λ°©λ¬Έν ν μλ‘ κ³ μΉ¨ν΄μΌν©λλ€ (ν΄λΉ νμ΄μ§μμ μ 리λ₯Ό μμν μ μλλ‘).
4) ν¬λ‘¬ λλ²κ±°λ₯Ό μ΄κ³ μ½μμμ λ€μμ μ€ννμμμ€.
(function() {
var room = 'MTpSb29tLDE5NzQ2MzAwMQ',
wall = 'MTpSb29tLDE5NzQ2MzAwMSxXYWxsLDEwMDAx',
wallitem = 'MTpXYWxsSXRlbSwxOTg0NjMwMDQ';
function promiseTimer(ms) {
return new Ember.RSVP.Promise(function(resolve) {
Ember.run.later(resolve, ms);
});
}
function timedTransition() {
return BC.router.transitionTo.apply(BC.router, arguments).then(function() {
return promiseTimer(800);
});
}
function takeActions() {
var downloadUrl = window.wallitemRecord.get('downloadUrl');
window.open(downloadUrl);
promiseTimer(1400).then(function() {
return timedTransition('wall.wallitem', room, wall, wallitem);
}).then(function() {
return timedTransition('wall', room, wall);
}).then(function() {
return timedTransition('wall.wallitem', room, wall, wallitem);
}).then(function() {
return timedTransition('wall', room, wall);
}).then(function() {
return timedTransition('wall.wallitem', room, wall, wallitem);
}).then(function() {
return timedTransition('wall', room, wall);
}).then(function() {
return timedTransition('wall.wallitem', room, wall, wallitem);
}).then(function() {
return timedTransition('wall', room, wall);
}).then(function() {
return timedTransition('wall.wallitem', room, wall, wallitem);
}).then(function() {
return timedTransition('wall', room, wall);
});
}
BC.store.findRecord('wallitem', wallitem).then(function(wallitem) { window.wallitemRecord = wallitem; });
$('<button id="crash-reproduce">Crash Reproduce</button>').appendTo('.top-right-nav');
$('#crash-reproduce').on('click', takeActions);
})();
5) Chrome λλ²κ±°λ₯Ό "μμΈ λ°μμ μΌμ μ€μ§"λ‘ μ€μ ν©λλ€.
6) μ½μ λ μ½λλ μ€λ₯Έμͺ½ μλ¨μ λ²νΌμ μΆκ°ν΄μΌν©λλ€. κ·Έ λ²νΌμ ν΄λ¦νμμμ€. λ¨Όμ μ νμ΄ μ΄λ¦¬κ³ λ€μ΄λ‘λ ν νμΌμ΄ νΈλ¦¬κ±° λ λ€μ λͺ¨λ¬ λν μμκ° μ¬λ¬ λ² μ΄λ¦¬κ³ λ«νλλ€. μ΄ λͺ¨λ¬μ μ€μ λ‘ "λΌμ°ν κ°λ₯"νλ―λ‘ κ²½λ‘ λ³κ²½λ κ΄μ°°ν΄μΌν©λλ€. λͺ¨λ¬μ λ λ²μ§Έ λλ μΈ λ²μ§Έλ‘ μ΄ λ μμΈκ° λ°μν΄μΌν©λλ€. μ΄ λ¬Έμ κ° λ°μνμ§ μμΌλ©΄ λΈλΌμ°μ λ₯Ό μλ‘ κ³ μΉκ³ λ€μ μλνμμμ€ (4 λ¨κ³λΆν° μμ).
κ·Έλμ μμ€ μ½λλ₯Ό μ»μ μ μλλ‘ λ Έλ ₯νκ² μ΅λλ€. Google App Engineμμ μ€νλλ―λ‘ μ¬μ ν ν΄λΌμ°λ μλ²μ μ°κ²°ν΄μΌνμ§λ§ ν΄λΌμ΄μΈνΈ μ±μ λ‘컬μμ μ€νν μ μλλ‘ μ λ ¬ ν μ μμ΄μΌν©λλ€ (ν΄λΌμ°λ μλ²μ νλ‘μ).
λ§μ§λ§μΌλ‘ μ λ μ§κΈ μ¬μ λ₯Ό κ°μ§κ³ μμΌλ©° λλΆ νμ€μ κΈ°μ€ μ€ν 4 μκΉ μ§μ λλ€. νμν κ²½μ° μ€ν¬λ¦° νμ΄λ‘μκ² κΈ°λ»ν κ²μ λλ€. λ΄μΌλ ν루 μ’ μΌ μ¬μ©ν μ μμ΅λλ€.
λ©μ§ μ¬ν λ¨κ³!
λλ νμ¬ μ§μμΌμνκ³ μμ§λ§ μ€λ λ¦κ² (λλ λ΄μΌ μμΉ¨) μ‘°μ¬νλ €κ³ λ Έλ ₯ν κ²μ λλ€.
@stefanpenner κ°μ¬ν©λλ€! λ΄μΌ ν루 μ’ μΌ μ¨λΌμΈ μνκ°λλ©° νμν κ²½μ° κΈ°κΊΌμ΄ λμ λλ¦¬κ² μ΅λλ€. emberjs μ¬λμμ λλ₯Ό μ°Ύμ μ μμ΅λλ€. λν μμ€ μ½λμ μ‘μΈμ€νλ λ°©λ²μ λν μ΄λ©μΌμ 보λμ΅λλ€ (github κ³μ μ λμ΄λ @gmail λ‘ μ΄λ©μΌμ 보λ).
@stefanpenner μ°Έκ³ λ‘ λ¨κ³λ₯Ό μ½κ° μ‘°μ νμ΅λλ€. μ°λ¦¬ μ±μ "λ²½λ λͺ¨λ"λͺ©λ‘μ μ¬μ©νλ©΄ λ¬Έμ λ₯Ό μ¬ν ν κ°λ₯μ±μ΄ ν¨μ¬ λ λλ€λ κ²μ λ°κ²¬νμ΅λλ€. λ³κ²½λ κ²μ 1 λ¨κ³μ URL, 2 λ¨κ³ μλμ μ€ν¬λ¦° μ·, 4 λ¨κ³μ μ½λ μ€ λν«λΏμ λλ€.
_ μ μ§λ¬Έμ λν μλ΅μΌλ‘ μ΄κ²μ΄ v8 / Chrome μ μ© μΈ κ²½μ° : _ λ‘κ·Έλ₯Ό νμΈνκ³ 8 건μ λ°κ²¬νμΌλ©° Windows (7 λ° 10)μμ λͺ¨λ Chrome (49/48)μ μ°Ύμμ΅λλ€. λΆννλ λ λ§μ λ°μ΄ν° ν¬μΈνΈκ° μμ΅λλ€.
λλ μ΄κ²μ μ¬ννλ €κ³ λ Έλ ₯νμ§λ§ Twiddleκ³Ό λ‘컬μμ μ΄μ΄ μμμ΅λλ€. κ·Έλ¬λ λμ°λ―Έκ°μλ λ€λ₯Έ μ±μ΄ νλ‘λμ μ μκ³ μΆ©λνμ§ μκΈ° λλ¬Έμ λμ°λ―Έμκ²λ§ ν΄λΉλλ κ² κ°μ΅λλ€.
λλ μμ© νλ‘κ·Έλ¨μ΄ κ²½λ‘ μ¬μ΄λ₯Ό μλ€λ‘ νμνλλ‘ κ°μ νμ¬ λ¬΄μ°¨λ³ λμ ν μ€νΈλ₯Ό μννμΌλ©° λλ‘λ 3 λ²μ μ ν ν μ€λ₯κ° λ°μνκ³ μ€λ₯λ₯Ό λμ§κ³ λ€μ μ νμΌλ‘ 볡ꡬνκ³ λ³΅κ΅¬ ν λ€μ μΆ©λνμ§ μλ κ²μ²λΌ 보μμ΅λλ€.
νΈμ§ : λλ κ·Έκ²μ΄ μ ν μ¬μ΄μ 50msμ μ§μ°κ³Ό ν¨κ» μ€λ¨λμ§ μμ κ²μ λλ€. κ·Έ ν 5 λ²μ μλ μ¬λ‘λλ₯Ό μννκ³ ν νλ¦Ώμ μΌλΆ λμ°λ―Έκ°μλ μ΄κΈ° "μΈλ±μ€ κ²½λ‘"λ λλ§μ μν ν λ λΆν μ μΆ©λμ΄ λ°μνμ΅λλ€.
λλ μμ© νλ‘κ·Έλ¨μ΄ κ²½λ‘ μ¬μ΄λ₯Ό μλ€λ‘ νμνλλ‘ κ°μ νμ¬ λ¬΄μ°¨λ³ λμ ν μ€νΈλ₯Ό μννμΌλ©° λλ‘λ 3 λ²μ μ ν ν μ€λ₯κ° λ°μνκ³ μ€λ₯λ₯Ό λμ§κ³ λ€μ μ νμΌλ‘ 볡ꡬνκ³ λ³΅κ΅¬ ν λ€μ μΆ©λνμ§ μλ κ²μ²λΌ 보μμ΅λλ€.
μ΄κ²μ λ΄ κ²½νμ μ λμ μΌλ‘ μ€λͺ ν©λλ€.
μ°λ¦¬μ κ²½μ° window.open
λ₯Ό μ¬μ©νμ¬ νμΌ λ€μ΄λ‘λλ₯Ό νΈλ¦¬κ±°νκ³ μ΄ μμ
μμ΄ λ¬Έμ κ° λ°μν κ°λ₯μ±μ λμ΄λ λ° λμμ΄λ©λλ€ (νμ§λ§ λ λ μ²μ΄ μΌ μ μμ). λλ₯Ό μν΄, λλλ‘ λλ κ΅΄λ¬ κ°κ³ κ·Έκ²μ 3 λ²μ§Έ λλ 4 λ²μ§Έ μ ν νμ 10 λ² μ€ 10 λ² λ°μν©λλ€. λ€λ₯Έ κ²½μ°μλ 30 λΆμ ν λ² λ°μνμ§ μμ΅λλ€.
@workmanw λλ κ·Έκ²μ μ¬ννλ λ° λμμ΄λλ "κ²μ²λΌ 보μ΄λ"μ νμ "κ°λ₯μ±μ΄ λμ"μ νμ κ²λ€μ λ§μ΄ κ°μ§κ³ μμ§λ§ μ€μ λ‘λ λμκ² μ£Όμ΄μ§ "ννΈ"μμ© νλ‘κ·Έλ¨μ λ°λ₯Ό μ μμμ΅λλ€. μμ ν 무μμλ‘ λ³΄μ λλ€.
μ¬κΈ°μ μ 곡λ 볡μ λ¨κ³μ λ°λΌ μμ© νλ‘κ·Έλ¨λ μΆ©λνλ €κ³ μλνμ§λ§ λ°μνμ§ μμμ΅λλ€.
@stefanpenner κΈ°λ₯ λ³Έλ¬Έμ "λΌμ§ κ³ κΈ°"λ₯Ό μΆκ°νλ €κ³ νμ§λ§ λμμ΄λμ§ μμκ±°λ λκ° μλͺ»νμ΅λλ€.
μ΄μ¨λ , λλ μ΄κ²μ λ μμ£Ό ν λ°©λ²μ΄ μλ€κ³ μκ°ν©λλ€. λλ μ΄μ νμ λμΌν λμ°λ―Έμμ νμΈνμ΅λλ€.
μ§κΈκΉμ§ μ½μμ΄ μΆ©λ ν λ μΌλΆ μ½μ λ‘κ·Έ μμμ κ΄λ¦¬νμ΅λλ€. μμ μ *κ° μ μλμ§ μμμλΏλ§ μλλΌ helperName λ μ μλμ§ μμμ΅λλ€. κ·Έλμ νλ μ΄μμ κ²μ΄ λλ½λ©λλ€.
@workmanw λ΄ μ±μ΄ λ λ§μ΄ μΆ©λνλλ‘ λμμ£Όλ λͺ κ°μ§ λ¨κ³ :
if (validateLazyHelperName(name, owner, env.hooks.keywords)) {
var helperName = 'helper:' + name;
console.log("Before", helperName, owner !== undefined, owner._lookupFactory !== undefined);
if (owner.hasRegistration(helperName, options)) {
console.log("After", helperName, owner !== undefined);
console.log("After _lookupFactory", owner._lookupFactory !== undefined);
helper = owner._lookupFactory(helperName, options);
}
}
ember s --prod
μ΄ κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€.
Before helper:t true true
After undefined false
TypeError: Cannot read property '_lookupFactory' of undefined
λ λ²μ§Έ μ½μ λ‘κ·Έκ° μ€νλλ©΄ helperNameκ³Ό ownerλ μ΄λ―Έ "μ μλμ§ μμ"μνμ΄λ©° "After _lookupFactory"console.logμμ μΆ©λμ΄ λ°μν©λλ€.
νΈμ§ :μ΄ λμ°λ―Έ : t λ ember-i18nμ΄ μλ λ§μΆ€ μ μ λ κ²μμ λͺ μ¬νμμμ€.
+1ν΄μ μ£μ‘ν©λλ€. "μ’μμ μ΄λͺ¨ν°μ½"λ§μΌλ‘ μ λ°μ΄νΈλ₯Ό ꡬλ νλμ§ νμ€νμ§ μμ΅λλ€.
νλ‘λμ λΉλμμλ§ μ νν λμΌν μ€λ₯μ λλ€.
ν¬λ‘¬ : 48.0.2564.116, 49.0.2623.87
MacOS : 10.9.5
@stefanpenner μ --nouse_inlining
λ°μνμ§ μλ κ² κ°μ΅λλ€. λλ nouse_inliningμ μ¬μ©νκ±°λ μ¬μ©νμ§ μκ³ λͺ λ² μ€νμ μλνμ§λ§ μΈλΌμΈμ΄ λΉνμ±νλμμ λ μΆ©λνμ§ μμμ΅λλ€. νλκ·Έμμ΄ Chromeμ μ€ννλ©΄ μ΄μ λκΈμμ ν΄λΉ console.logsμ μΆ©λνκΈ° μν΄ 7 κ° μ€ 5 κ°λ₯Ό λ€μλ‘λ ν μ μμ΅λλ€. λλ μ¬μ ν Twiddle λλ λ°λͺ¨ μ±μμ μ΄κ²μ μ¬ν κ°λ₯νκ² λ§λλ λ°©λ²μ μμ λ΄μΌν©λλ€.
λλ 2 μ μ΄ (2.3, 2.4), OSXμ Windows, Chromeμμλ§ μ΄κ²μλ³΄κ³ μλ€. λͺ¨λ μ¬μ©μ μ μ Em.Helper.helpers λ° ember-truth-helpersλ₯Ό μ κ±°νλ©΄ (λ¬Όλ‘ ) μ€λ₯κ° νμλμ§ μμ΅λλ€.
μλ°μ§ λͺ¨μλ₯Ό νΈμ΄ λ²λ¦¬λ λ²κ·Έλ₯Ό λ§λ μ§ μ€λλμμ΅λλ€.
_ λΉμ μ νΌμκ° μλλλ€. μ§μ€μ μ λλ¨Έμμλ€._
EmberObserver.comμ μ€λ₯ λ‘κ·Έμμλμ΄λ₯Ό νμΈνμμμ€. μ€ν μμ€ https://github.com/emberobserver/client μ΄κΈ° λλ¬Έμ μ μ© ν μ μκΈ° λλ¬Έμ μ°¨μ
λν Ember 2.4.1μμ μμ© νλ‘κ·Έλ¨μ λͺ¨λ κ²½λ‘, Windows 7, 8.1, 10, OS X λ° Ubuntuμ Chrome λλ Chromium 48μμ λ³Ό μ μμ΅λλ€.
@typeoneerror fwiw μ λ κ°μΈμ μΌλ‘ μ¬λλ€μ΄ νκ²½μ λν μΈλΆ μ 보λ₯Ό μ 곡νλ©΄μ λμΌν λ²κ·Έλ₯Ό κ²½ννλ€κ³ λ³΄κ³ νκ²λμ΄ λ§€μ° κΈ°μ©λλ€.
λλ κ·Έλ¬ν λ³΄κ³ μλ‘ μΈν΄ λκ° μ νν ν΄λ₯Ό μ μ κ²μΈμ§ μ λͺ¨λ₯΄κ² μ΅λλ€.
λ°©κΈ V8 λ²κ·Έ https://bugs.chromium.org/p/v8/issues/detail?id=4839λ₯Ό μ΄μμ΅λλ€
λ―Έμνμ§λ§ μ‘°λ§κ° λ μμΈν μ΄ν΄λ³Ό μμλμ£ΌκΈ°κ° μμμ΅λλ€.
μ€λͺ λ κ²λ³΄λ€ μ¬ννκΈ°κ° λ μ΄λ €μ μ§λ§ μ΅μ Mac OS Chromium λΉλ λ²μ 51.0.2671.4 (64 λΉνΈ)μμ μ¬ν ν μμμμ΅λλ€.
λ°©κΈ ember.prod.js λΉλκ°μλ Twiddleμμ μ΄λ° μΌμ΄ λ°μνλ κ²μ 보μμ΅λλ€. Chrome 49.0.2623.87 (64 λΉνΈ), OS X 10.11.3
Uncaught TypeError: Cannot read property '_lookupFactory' of undefined VM3158 ember.prod.js:11783
볡μ λ μμ§ λΆλΆλͺ ν©λλ€. μΌλ¨ 볡μ λ¨κ³κ° μμΌλ©΄ μ¬κΈ°μ Twiddleμ 곡μ νκ² μ΅λλ€.
@raido --js-flags = "-predictable"μ μ¬μ©νμ¬ Chromeμ μ€ννλ κ²μ΄ λμμ΄ λ μ μμ΅λλ€. μ΄λ λ°±κ·ΈλΌμ΄λ μ€λ λμ κ΄λ ¨λ λͺ¨λ κ²κ³Ό κ°μ λΉκ²° μ μ±μ μ λ°νλ κ²μΌλ‘ μλ €μ§ λ€μν κΈ°λ₯μ ν΄μ ν©λλ€. μ’μ μ¬νμ μ°ΎμΌλ©΄ μλ €μ£ΌμΈμ!
: tada : μμ΄! λ‘κ·Έμμ 6 κ° μ λμ μ¬λλ€μ΄ 51 κ°λ₯Ό ν¬ν¨ν λ€μν λ²μ μ ν¬λ‘¬μμ μ΄κ²μ μ¬ν ν μμμμ΅λλ€.
@krisselden μ£μ‘ν©λλ€. λλ μ΄μ λ΅λ³μμ νμ μ¬ν ν μμλ κ²μ μλλΌλ κ²μ μμνλ€κ³ μκ°νμ§λ§, μ¬ν λ¨κ³μ λν μ견μ λͺ μ μ μ΄μμ΄ μΌνμ΅λλ€. λλλ‘ κ·Έκ²μ μΌμ΄λμ§ μλ κ²μ²λΌ 보μ λλ€. μ¬κΈ°μ μ¬μ ν λ³μκ° μμ΅λλ€. 2 ~ 3 ν μλ νμλ μ½κ² λ°μνμ§ μλ κ²½μ° Chromeμ λ€μ μμνλ©΄ λμμ΄ λ μ μμ΅λλ€.
@stefanpenner μ§κΈ λͺ κ°μ§μ£ΌκΈ°κ° μμΌλ©° 6-8 μκ° λμ λ°λ³΅ν΄μ μ¬ννλ €κ³ νμ΅λλ€. μκ°μ΄λ μκ°μ΄ μμΌμλ©΄ κΈ°κΊΌμ΄ νꡬνκ² μ΅λλ€. μ΄ λ¬Έμ μ λν λλ©μΈ μ§μμ΄ μΆ©λΆνμ§ μμ΅λλ€.
@workmanw @stefanpenner μ¬κΈ°μμ μ§νλλ μ 체 λ¬Έμ μ λν μ§μκ³Ό λμΌν λ¬Έμ κ° μμ΅λλ€. μμ£Ό μΆ©λνλ λ΄ νΈμλ€μ μ΄μ κ±°μ μλνμ§ μμΌλ©° Chromeμ λͺ λ² λ«κ³ μ΄μλ€λ κ² μΈμλ μ무κ²λ λ³κ²½λμ§ μμμ΅λλ€ (μλ§ κ΄λ ¨μ΄ μμ). μ λ§ μ§μ¦λ©λλ€.
@jakobkummerow --predictable νλκ·Έλ‘ λ΄ μ±μ μΆ©λμν¬ μ μμμ΅λλ€.
https://github.com/runspired/bug-13071 μμ μ€ν¨ν μλ½ ν μ€νΈλ₯Ό λ§λ€λ €κ³ νμ΅λλ€.
bower_components
ember.debug.js
μ΄ ember.prod.js
λ‘ κ΅μ²΄λμμΌλ―λ‘ bower_components
κ° μ»€λ°λμμ΅λλ€. μ§κΈκΉμ§ μ¬νμ μμ΄μλ μ΄μ΄ μ’μ§ μμμ§λ§, λλ μ΄λ€ λ²κ·Έ λ³΄κ³ μμλ μμ λνλμ§ μμ Chrome 47μ μ¬μ©νκ³ μμ΅λλ€.
@runspired λλ
λ΄κ° κ°μ§κ³ λμ λ Twiddle https://ember-twiddle.com/7fdf923d89ea37095cf3
_lookupFactory λ©μμ§λ‘ κ° μ νμ΄ λλ κ²μ²λΌ μ°μμΌλ‘ μΈ λ² μΆ©λμ΄ λ°μνμ΅λλ€.
νΈμ§ : λλ μ€ν¬λ¦° μΊμ€νΈμμ Twiddleμμ 3 κ°μ μΆ©λμ λν stackstracesλ₯Ό μ‘μμ΅λλ€. κ·Έ μ€ 2 κ°λ λμΌνκ³ νλλ λ€λ¦ λλ€. https://www.dropbox.com/s/51uwx6zo1scs7il/bug-13071.mp4?dl=1
μ΄ λ¬Έμ λ₯Ό μμ μ μΌλ‘ μ¬ννλ κ²μ λ무 μ΄λ ΅μ§λ§ νμ¬ μ©μμλ https://github.com/emberjs/ember.js/blob/cfed40154285501c19a60aef3c0f51c645c9d44d/packages/ember-runtime/lib/mixins/container_proxy.js#L115 -L119 λꡬλ μ§ μ½κ² μ¬ν ν μ μλ€λ©΄ λ³μΉμ μ§μ μμ±νκ³ νλ‘μ λμμ λ«μ§ μμ΅λλ€.
@workmanw λ΄κ° λ¬Έμ λΌκ³ μκ°νλ κ²μ νΌνκΈ° μν΄ PRμ μννλ©΄ ν μ€νΈ ν μ μμ΅λκΉ?
λλ λν μ²μμΌλ‘ μ΄κ²μ μ³€λ€ (κ·Έλ¦¬κ³ νΈμν°μμμ΄ ν λ‘ μ λ³Έ κΈ°μ΅μ΄ λλ€). Chrome 48.0.2564.116 λ° Ember 2.3.
Slackμμ @krisselden κ³Ό μ±ν νμ΅λλ€. μ, PRμ μλν΄ λλ¦¬κ² μ΅λλ€. λ΄ λ²μλ₯ μ μκ°μ μ½ 33 % (λ무 μμ£Ό)μ λλ€.
@workmanw ember repoλ₯Ό 볡μ νκ³ curl https://github.com/emberjs/ember.js/pull/13116.patch | git am
λ₯Ό μ¬μ©νκ³ npm run build
νκ³ distλ₯Ό bower_components / emberλ‘ μ¬μ©νμ¬ μμ μμ
μ μλ ν μ μμ΅λλ€.
@krisselden λΆννλ, κ·Έκ²μ μ°¨μ΄λ₯Ό λ§λ€μ§ μμ κ² κ°μ΅λλ€ :(
v2.4.2
μ²΄ν¬ μμνκ³ ν¨μΉλ₯Ό μ μ©νκ³ λΉλλ₯Όνμ΅λλ€. ember.min.js
μ λ΄ app/bower_components/ember/ember.debug.js
볡μ¬νμ΅λλ€. tmp/
λλ ν 리λ₯Ό μ κ±°νκ³ μλ²λ₯Ό μμνμ΅λλ€. μμ€ νμμ ν¨μΉκ° μ μ©λμμμ νμΈνμ΅λλ€.
λκ΅°κ°κ° λ€μ νμΈνκ³ μΆλ€λ©΄ μ¬κΈ° λ΄ ν¨μΉμ λΉλ νμ ν΄μκ° μμ΅λλ€ : MD5 (dist/ember.min.js) = 23ab1021bebdf170d21338fecf347937
λΉμ μ΄ κ°μ§κ³ μμμ§λ λͺ¨λ₯΄λ μμ΄λμ΄λ₯Ό κ³μ μλνκ²λμ΄ κΈ°μ©λλ€.
@workmanw https://bugs.chromium.org/p/v8/issues/detail?id=4839#c7 μ λ§μ§λ§ λκΈμ κΈ°λ°μΌλ‘ μ½λλ₯Ό 보면 λ‘컬 λμ°λ―Έ μ‘°νλ₯Ό μ¬μ©νκ³ μμ΅λκΉ? _findHelper
κ° μ¬κΈ°μ μΈλΌμΈλκ³ μλ€κ³ μκ°ν©λλ€ https://github.com/emberjs/ember.js/blob/master/packages/ember-htmlbars/lib/system/lookup-helper.js#L62 μ΄ κ²½μ°κ° μ°ΈμΈ κ²μ λ³Έ μ μ΄ μμΌλ©° μ°Έμ΄λλ κ²½λ‘λ‘ μ΄λν λ hasRegistration
μΈλΌμΈ μ½λμ deoptμ λν μμ μκ° μμ΅λλ€.
λ΄ νμ¬ μκ°μ https://github.com/emberjs/ember.js/commit/8af7da67c4b1eab94a6adfc82c91af98dc3ee532 κ° v8μμ λ²κ·Έλ₯Ό νΈλ¦¬κ±°νκ³ _findHelperκ° λ‘컬 λμ°λ―Έλ₯Ό μ¬μ©νμ¬ λΆκΈ°λ₯Ό μΈλΌμΈνκ±°λ λ°λ»νκ²νλ κ²μ λ°©μ§νλ©΄ λ²κ·Έκ° μμ λ λκΉμ§ ν΄κ²°λ©λλ€. v8.
@krisselden ν μ€νΈ ν μ€λΉκ° λ κ²μ΄ μμΌλ©΄ μλν΄ λ³Ό μ μμ΅λλ€. λ΄ μ¬μλ₯ μ @workmanw μ κ±°μ κ°μ΅λλ€.
@workmanw https://bugs.chromium.org/p/v8/issues/detail?id=4839#c9 μ£Όμμ κΈ°λ°μΌλ‘ λ΄κ° λ§λ PRμ ν μ€νΈ ν μ μμ΅λκΉ?
ν보 https://github.com/emberjs/ember.js/pull/13118
μ΄ λ³κ²½μΌλ‘ λ΄ μ±μ μΆ©λμν¬ μ μμμ΅λλ€. λ³κ²½ μ¬νμ λ λ리면 κ±°μ μ¦μ μΆ©λμ΄ μμλ©λλ€.
: confetti_ball : : tada : νλλ° λ¬Έμ λ₯Ό μ¬ν ν μ μμ΅λλ€. μ¦ μ±κ³΅μ μΌλ‘ ν΄κ²° λ κ²μ²λΌ 보μΈλ€. :λ―Έμ:
νΈμ§ : Chrome 49 λ° Chrome 51λ‘ ν μ€νΈλμμ΅λλ€.
λ³΄κ³ λ μλ리μ€λ₯Ό λ©΄λ°ν λ°λ₯΄λ €κ³ λ Έλ ₯νμ§λ§μ΄ μ½λκ° Ember 2.3μλ μλ€κ³ μκ°ν©λλ€. Ember 2.3λμ΄ λ¬Έμ λ₯Ό κ²ͺλμ?
μ, Ember v2.3λ μ΄κ²μ μν₯μλ°λ κ²μ νμΈν μ μμ΅λλ€.
μ’μ, https://github.com/emberjs/ember.js/issues/13118 μ λ² ν, λ¦΄λ¦¬μ€ λ° λ¦΄λ¦¬μ€ -2-3 λΈλμΉλ‘ κ°μ Έ μμ΅λλ€. λ¦΄λ¦¬μ€ λ° λ² ν μ±λμ 곧 μ λΉλλ₯Ό μ»μ κ²μ λλ€ (Travisλ₯Ό ν΅ν΄). μ μ λμ λλλ €μ μ€μ λ‘μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλμ§ νμΈν μ μμ΅λλ€.
@workmanw @raido μ΄ λ¬Έμ λ₯Ό μ°Ύμ ν΄κ²°νκΈ° μν΄ Chromiumκ³Ό νλ ₯νμ¬ λ²κ·Έλ₯Ό μ¬ννλ λ° λ§μ μκ°μ λ³΄λ΄ μ£Όμ
μ κ°μ¬ν©λλ€ .
μ±
μκ°μλ OSS μ¬μ©μκ° λλ €κ³ λ
Έλ ₯νλ©΄μ μμ μ μΈ μμ / νΈμλ€ / λΉ / λ±μ λ§λ€ μ μμ΄μ ν λ¬ λκ² λ¬Έμ μ μΆμ κΈ°λ€λ¦° Heisenbugs μ€ νλμ
λλ€. λ무 λ§μ λ
Όλ¦¬λ₯Ό 무μνκ³ λ΄ μλͺ»μ΄λΌκ³ μκ°νμ΅λλ€. λ€μ λ²μλ λ μ κ·Ήμ μΌλ‘ λλ£ νΌν΄μλ₯Ό μν΄ μ¬λ λ£Έμ νν κ²μ
λλ€.
λͺ¨λ μ νμ΄μ!
@ 2468ben λλ μ°λ¦¬κ° hesienbug / maybe vmbug λ μ΄λΈμ κ°μ ΈμΌν μ§ κΆκΈν©λλ€.
[# 13118μ μν΄ μμ λ¨]
:)
@rwjblue μ§κΈ "ember": "components/ember#9c3e5820"
λ₯Ό μ¬μ©νλλ‘ bower.jsonμ μ
λ°μ΄νΈνμΌλ©° QAμ£ΌκΈ°λ₯Ό ν΅ν΄ 보λ΄κ² μ΅λλ€. λ¬Έμ κ° λ°μνλ©΄ μλ € λλ¦¬κ² μ΅λλ€.
λλ¨ν κ°μ¬ν©λλ€!
λνμ΄ λ¬Έμ κ° λ°μνμΌλ©° μ΄λ‘ μΈν΄ ν΄κ²° λ κ²μΌλ‘ 보μ
λλ€. μ§κΈκΉμ§ ν μκ° μ΄μ ember#9c3e5820
λΉλμ λν΄ μ¬μ΄νΈλ₯Ό λ§μΉκ³ μλλ° μλ¬΄λ° λ¬Έμ κ° μμ΅λλ€.
v2.4.3μ https://github.com/emberjs/ember.js/pull/13118 μ μΆκ° λ ν΄κ²° λ°©λ²μΌλ‘ 릴리μ€λμμ΅λλ€
μ€ μ΄λ°,μ΄ μ€λ λλ₯Ό μ°ΎκΈ° μ μμ΄ λ²κ·Έλ₯Ό μ¬ν / μμ νλ λ° μκ°μ 보λμ΅λλ€. μ νμ΄!
μ°λ¦¬λ νμ¬ [email protected]
μμ μ±μ μ€ννκ³ μμΌλ©° μ½λμ https://github.com/emberjs/ember.js/pull/13118μ ν΄κ²° λ°©λ²μ΄ ν¬ν¨λμ΄ μλλΌλ Sentryμ λ°λΌ μ νν λ¬Έμ κ° λ°μν©λλ€. π
@ Turbo87 μ΄ λ¬Έμ λ Chromeμμλ μμ λμμ΅λλ€. λ°λΌμμ΄λ₯Ό μ€νν μμλ Chrome λ²μ μ 1 κ° λλ 2 κ°λ§ μμ΄μΌν©λλ€.
κ°μ λ¬Έμ λΌκ³ νμ ν©λκΉ?
@workmanw μ, λκ°μ΅λλ€. λΆλͺ ν μΌλΆ μ¬μ©μλ μ¬μ ν μ΄μ Chrome λ²μ μ μ€ννκ³ μμΌλ©° μ€μ λ‘ μΌλΆ νμ λΈλΌμ°μ (Sogou Explorer, Opera, Chromium, Dragon)λ Sentry λ‘κ·Έμ λ°λΌ μ μ¬ν λμμ 보μ΄κ³ μμ΅λλ€.
:(. κ³ ν΅μ λλλλ€. μΌλΆ κ³ κ°μ μ¬μ©μλ₯Ό νΉμ λ²μ μ ChromeμΌλ‘ κ³ μ νκ³ μ κ·Έλ μ΄λλ₯Ό νμ©νμ§ μλ κΈ°μ μ λλ€.
μ΄ λ¬Έμ κ° μ΄λ€ μ μΌλ‘λ λ€μ λν λ¬μ κ°λ₯μ±μ΄ μμ΅λλ€. λΉμμμ΄ ν΄κ²° λ°©λ²μΌλ‘ λ¬Έμ κ° ν΄κ²°λμλ€κ³ 100 % νμ€νκ² λ§ν μ μμ΅λλ€ ( v2.4.3
).
μ¬κΈ°λ λ§μ°¬κ°μ§μ λλ€.
@ Turbo87 νΉμ λ²μ μ΄ μμ΅λκΉ?
Chrome 49λ μ΄λ€ μ΄μ λ‘ λ κ°μ₯ μΌλ°μ μΈ κ²μ λλ€
@ Turbo87 μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©λ²μ μ°Ύμ μ μ΄ μμ΅λκΉ?
@givanse μ°λ¦¬λ μ§κΈκΉμ§ Ember 2.12λ‘ μ κ·Έλ μ΄λνμΌλ©° λ μ΄μμ΄ λ¬Έμ κ° λ°μνμ§ μλ κ² κ°μ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
v2.4.3μ https://github.com/emberjs/ember.js/pull/13118 μ μΆκ° λ ν΄κ²° λ°©λ²μΌλ‘ 릴리μ€λμμ΅λλ€