IE11 - Отклонение необработанного обещания: синтаксическая ошибка

Я работаю над приложением Angular 2 и впервые добавил некоторые async/await функции. Все работает нормально локально, но после его развертывания на моем тестовом сервере, где я получаю эту ошибку в IE11 (см. Нижнюю часть вопроса для полной трассировки стека браузера):

Отклонение необработанного обещания: синтаксическая ошибка

Ошибка возникает при загрузке приложения Angular2, а не при выполнении метода. Ошибка указывает на этот метод (он также является единственным методом в этом компоненте).

my-component.ts

async logoff(event: { preventDefault: () => void }) {
    event.preventDefault();
    await this.authService.logoff();
    window.location.href = '/Account/Login';
}

Я впервые представил async/await, поэтому я знаю, что это главная проблема.

Шаги тестирования

  • I use Visual Studio to publish a release version to my local IIS. Spces are:
    • Windows 10 (x64)
    • IIS
  • Затем я запускаю установку своих пакетов npm, которые мне нужны для производственной среды, в моем опубликованном каталоге

    npm i --production
    
  • Открываю IE11 браузер, запускаю приложение из IIS и все работает, ошибок нет.

  • I then make a complete copy of my published directory and copy it to my test server. Test server spces are:
    • Windows 2012 R2 Standard
    • IIS
  • Затем я перехожу на сайт, используя тот же экземпляр браузера IE11 на моем компьютере Dev, который я использовал ранее, и получаю указанную выше ошибку.

Так почему же он терпит неудачу, когда я запускаю его со своего тестового сервера, и не выходит из строя, когда я запускаю его с моего локального компьютера? Есть ли требуемый модуль / пакет Node или NPM, который нужно установить глобально для прокладок для корректной работы из IE11 или проблема в другом? Я здесь в растерянности.

Конфигурация

Если я могу что-то добавить к этому, дайте мне знать, я обновлю вопрос.

tsconfig.js

Согласно рекомендуемой конфигурации

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [ "es2015", "dom" ],
    "removeComments": false,
    "noImplicitAny": false,
    "suppressImplicitAnyIndexErrors": true
  },
  "compileOnSave": true
}

package.json

  "dependencies": {
    "@angular/common": "2.4.8",
    "@angular/compiler": "2.4.8",
    "@angular/core": "2.4.8",
    "@angular/forms": "2.4.8",
    "@angular/http": "2.4.8",
    "@angular/platform-browser": "2.4.8",
    "@angular/platform-browser-dynamic": "2.4.8",
    "@angular/router": "3.4.8",
    "core-js": "~2.4.1",
    "jquery": "~3.1.1",
    "lodash": "^4.17.4",
    "reflect-metadata": "^0.1.9",
    "rxjs": "5.2.0",
    "systemjs": "0.20.9",
    "zone.js": "^0.7.7"
  }

Index.html (только скрипты)

<script src="https://cdnjs.cloudflare.com/ajax/libs/core-js/2.4.1/shim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.0.1/Rx.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/zone.js/0.7.7/zone.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reflect-metadata/0.1.8/Reflect.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js"></script>
<script>
    System.import('system-config.js')
        .then(function() {
            System.import('main');
        })
        .catch(console.error.bind(console));
</script>

Полная трассировка стека на стороне клиента

Unhandled Promise rejection: Syntax error
  Evaluating http://mytest.server.domain/Scripts/my-component.js
  Evaluating http://mytest.server.domain/Scripts/app.module.js
  Evaluating http://mytest.server.domain/Scripts/main.js
  Loading main ; Zone: <root> ; Task: Promise.then ; Value: Error: Syntax error
  Evaluating http://mytest.server.domain/Scripts/my-component.js
  Evaluating http://mytest.server.domain/Scripts/app.module.js
  Evaluating http://mytest.server.domain/Scripts/main.js
  Loading main SyntaxError: Syntax error
   at Pe (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:25003)
   at Anonymous function (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:5:224)
   at j (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7593)
   at S (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7059)
   at x (https://cdnjs.cloudflare.com/a
   "Unhandled Promise rejection:"
   "Syntax error
  Evaluating http://mytest.server.domain/Scripts/my-component.js
  Evaluating http://mytest.server.domain/Scripts/app.module.js
  Evaluating http://mytest.server.domain/Scripts/main.js
  Loading main"
   "; Zone:"
   "<root>"
   "; Task:"
   "Promise.then"
   "; Value:"
   {
      [functions]: ,
      __proto__: { },
      __zone_symbol__error: { },
      __zone_symbol__message: "Syntax error
  Evaluating http://mytest.server.domain/Scripts/my-component.js
  Evaluating http://mytest.server.domain/Scripts/app.module.js
  Evaluating http://mytest.server.domain/Scripts/main.js
  Loading main",
      __zone_symbol__number: undefined,
      description: "Syntax error
  Evaluating http://mytest.server.domain/Scripts/my-component.js
  Evaluating http://mytest.server.domain/Scripts/app.module.js
  Evaluating http://mytest.server.domain/Scripts/main.js
  Loading main",
      message: "Syntax error
  Evaluating http://mytest.server.domain/Scripts/my-component.js
  Evaluating http://mytest.server.domain/Scripts/app.module.js
  Evaluating http://mytest.server.domain/Scripts/main.js
  Loading main",
      name: "Error",
      number: undefined,
      originalErr: { },
      originalStack: undefined,
      stack: "SyntaxError: Syntax error
   at Pe (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:25003)
   at Anonymous function (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:5:224)
   at j (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7593)
   at S (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7059)
   at x (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:6096)
   at Anonymous function (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:6268)
   at Anonymous function (eval code:20:1)
   at Anonymous function (eval code:1:31)
   at eval code (eval code:1:2)
   at Pe (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:25003)
   at Anonymous function (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:5:224)
   at j (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7593)
   at S (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7059)
   at x (",
      Symbol()_n.tcfyoms51l2: undefined,
      Symbol()_o.tcfyoms51l2: undefined,
      Symbol()_p.tcfyoms51l2: undefined,
      Symbol()_q.tcfyoms51l2: undefined,
      Symbol()_r.tcfyoms51l2: undefined,
      Symbol()_s.tcfyoms51l2: undefined,
      Symbol()_t.tcfyoms51l2: undefined,
      Symbol()_u.tcfyoms51l2: undefined,
      Symbol(rxSubscriber)_m.tcfyoms51l2: undefined,
      zoneAwareStack: undefined
   }
   "SyntaxError: Syntax error
   at Pe (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:25003)
   at Anonymous function (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:5:224)
   at j (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7593)
   at S (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7059)
   at x (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:6096)
   at Anonymous function (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:6268)
   at Anonymous function (eval code:20:1)
   at Anonymous function (eval code:1:31)
   at eval code (eval code:1:2)
   at Pe (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:25003)
   at Anonymous function (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:5:224)
   at j (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7593)
   at S (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7059)
   at x ("

Error: Uncaught (in promise): Error: Syntax error
  Evaluating http://mytest.server.domain/Scripts/my-component.js
  Evaluating http://mytest.server.domain/Scripts/app.module.js
  Evaluating http://mytest.server.domain/Scripts/main.js
  Loading main
SyntaxError: Syntax error
   at Pe (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:25003)
   at Anonymous function (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:5:224)
   at j (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7593)
   at S (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7059)
   at x (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:6096)
   at Anonymous function (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:6268)
   at Anonymous function (eval code:20:1)
   at Anonymous function (eval code:1:31)
   at eval code (eval code:1:2)
   at Pe (https://cdnjs.cloudflare.com/ajax/libs/sys
   {
      [functions]: ,
      __proto__: { },
      __zone_symbol__error: { },
      __zone_symbol__number: undefined,
      description: "Uncaught (in promise): Error: Syntax error
  Evaluating http://mytest.server.domain/Scripts/my-component.js
  Evaluating http://mytest.server.domain/Scripts/app.module.js
  Evaluating http://mytest.server.domain/Scripts/main.js
  Loading main
SyntaxError: Syntax error
   at Pe (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:25003)
   at Anonymous function (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:5:224)
   at j (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7593)
   at S (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7059)
   at x (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:6096)
   at Anonymous function (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:6268)
   at Anonymous function (eval code:20:1)
   at Anonymous function (eval code:1:31)
   at eval code (eval code:1:2)
   at Pe (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0",
      message: "Uncaught (in promise): Error: Syntax error
  Evaluating http://mytest.server.domain/Scripts/my-component.js
  Evaluating http://mytest.server.domain/Scripts/app.module.js
  Evaluating http://mytest.server.domain/Scripts/main.js
  Loading main
SyntaxError: Syntax error
   at Pe (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:25003)
   at Anonymous function (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:5:224)
   at j (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7593)
   at S (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7059)
   at x (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:6096)
   at Anonymous function (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:6268)
   at Anonymous function (eval code:20:1)
   at Anonymous function (eval code:1:31)
   at eval code (eval code:1:2)
   at Pe (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0",
      name: "Error",
      number: undefined,
      originalStack: undefined,
      promise: { },
      rejection: { },
      stack: "Error: Uncaught (in promise): Error: Syntax error
  Evaluating http://mytest.server.domain/Scripts/my-component.js
  Evaluating http://mytest.server.domain/Scripts/app.module.js
  Evaluating http://mytest.server.domain/Scripts/main.js
  Loading main
SyntaxError: Syntax error
   at Pe (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:25003)
   at Anonymous function (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:5:224)
   at j (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7593)
   at S (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:7059)
   at x (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:6096)
   at Anonymous function (https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.9/system.js:4:6268)
   at Anonymous function (eval code:20:1)
   at Anonymous function (eval code:1:31)
   at eval code (eval code:1:2)
   at Pe (https://cdnjs.cloudflare.com/ajax/libs/sys",
      Symbol()_n.tcfyoms51l2: undefined,
      Symbol()_o.tcfyoms51l2: undefined,
      Symbol()_p.tcfyoms51l2: undefined,
      Symbol()_q.tcfyoms51l2: undefined,
      Symbol()_r.tcfyoms51l2: undefined,
      Symbol()_s.tcfyoms51l2: undefined,
      Symbol()_t.tcfyoms51l2: undefined,
      Symbol()_u.tcfyoms51l2: undefined,
      Symbol(rxSubscriber)_m.tcfyoms51l2: undefined,
      task: { },
      zone: { },
      zoneAwareStack: undefined
   }

person Igor    schedule 06.03.2017    source источник
comment
Что, если вы окружите await this.authService.logoff(); try/catch и зарегистрируете потенциальную ошибку? Вы видите ошибку на своем тестовом сервере?   -  person Bruno Grieder    schedule 06.03.2017
comment
@BrunoGrieder - Спасибо за идею. Я только что попробовал, к сожалению результат такой же.   -  person Igor    schedule 06.03.2017
comment
Я считаю, что js-движки становятся разборчивыми при столкновении с «необработанными отказами», и мне пришлось переработать довольно много кода, чтобы отловить их. На NodeJS хороший способ их поймать - иметь обработчик, который будет записывать строку: process.on('unhandledRejection', (r: Error) => console.log('BUG: Unhandled Rejection', r));   -  person Bruno Grieder    schedule 06.03.2017
comment
Как вы звоните logoff(event)? Вы .catch() на нем или await пытаетесь / поймать?   -  person Bruno Grieder    schedule 06.03.2017
comment
@BrunoGrieder - Я добавил пояснение, ошибка возникает при загрузке приложения, а не при вызове метода (до этого не доходит).   -  person Igor    schedule 06.03.2017
comment
Ваш CDN отправляет ожидаемый код, а не старую кешированную версию? Заголовки ответа сообщат вам, свежий ли это код или результат попадания в кеш.   -  person Bruno Grieder    schedule 06.03.2017
comment
@BrunoGrieder - Я ненавижу IE (Я хотел написать несколько ругательств, но слишком уважительно отношусь к SO, чтобы сделать это). Да, IE кэшировал, хотя я был в режиме разработки (консоль открыта) И использовал CTRL + F5. Я взял вашу идею, зашел в меню «Параметры» и использовал настройки, чтобы очистить все из кеша. Теперь работает ....   -  person Igor    schedule 06.03.2017
comment
@BrunoGrieder - Большое спасибо, вы спасли мне день!   -  person Igor    schedule 06.03.2017
comment
Делает и мой день тоже :)   -  person Bruno Grieder    schedule 06.03.2017
comment
@BrunoGrieder - Не стесняйтесь отправлять ответ, я отмечу его, если вы это сделаете.   -  person Igor    schedule 06.03.2017


Ответы (1)


Проверьте различные используемые кеши: IE и ваш CDN; возможно, вы загружаете старую кэшированную копию

person Bruno Grieder    schedule 06.03.2017