Three.js: Ошибка function.prototype.name в Internet Explorer

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 27 сСнт. 2017  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: mrdoob/three.js

ОписаниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ THREE Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Aurelia-CLI. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ загруТаСтся с использованиСм ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ RequireJS. ВсС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ Internet Explorer (ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ Π² IE 11).

Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ломаСтся, выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»ΠΎΠ² Π²Π²Π΅Ρ€Ρ…Ρƒ, строки 42-57) Π² Ρ„Π°ΠΉΠ»Π΅ /build/three.js

if ( Function.prototype.name === undefined ) {

  // Missing in IE
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name

  Object.defineProperty( Function.prototype, 'name', {

    get: function () {

      return this.toString().match( /^\s*function\s*([^\(\s]*)/ )[ 1 ];

    }

  } );

}

Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ can't redefine non-configurable property "name" .

ПослС этого сообщСния я попытался Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ Π½Π°:

if (!(function f() {}).name) {
  Object.defineProperty(Function.prototype, 'name', {
    get: function() {
      var name = (this.toString().match(/^function\s*([^\s(]+)/) || [])[1];
      // For better performance only parse once, and then cache the
      // result through a new accessor for repeated access.
      Object.defineProperty(this, 'name', { value: name });
      return name;
    }
  });
}

И это Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ!

=> ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ»Π»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сСйчас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² /build/three.js, Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. МоТно Π»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ этот ΠΊΠΎΠ΄ Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… сборках?

ВСрсия Three.js
  • [] Dev
  • [x] r87
  • [] ...
Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€
  • [ ] ВсС ΠΎΠ½ΠΈ
  • [] Chrome
  • [ ] Fire Fox
  • [x] Internet Explorer
ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы
  • [ ] ВсС ΠΎΠ½ΠΈ
  • [] Windows
  • [x] macOS
  • [] Linux
  • [] Android
  • [] iOS

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π― ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽ, Ρ‡Ρ‚ΠΎ достаточно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ if .

if ( 'name' in Function.prototype === false ) {

это ΠΏΡƒΡ‚ΡŒ!

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‡Π΅ΠΊΠ° ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅?

if ( 'name' in Function.prototype === false ) {

Или ТС

if ( Function.prototype.hasOwnProperty( 'name' ) === false ) {

Π― ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽ, Ρ‡Ρ‚ΠΎ достаточно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ if .

if ( 'name' in Function.prototype === false ) {

это ΠΏΡƒΡ‚ΡŒ!

Ѐиксированный. Бпасибо!

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

kdilayer picture kdilayer  Β·  62ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

mrdoob picture mrdoob  Β·  84ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

jonobr1 picture jonobr1  Β·  95ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

arefin86 picture arefin86  Β·  64ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

ghost picture ghost  Β·  81ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ