Системная синтаксическая ошибка js, IE11
у меня есть приложение angular 2, работающее внутри firefox и chrome, а не внутри (вздох) IE. Основываясь на моей трассировке стека, похоже, что есть проблема с настройкой моей системы js.
Вот описание ошибки, которое я вижу внутри моей веб-консоли.
Error: (SystemJS) Syntax error
SyntaxError: Syntax error
at ZoneDelegate.prototype.invoke (http://localhost:8050/node_modules/zone.js/dist/zone.js:230:13)
at Zone.prototype.run (http://localhost:8050/node_modules/zone.js/dist/zone.js:114:17)
at Anonymous function (http://localhost:8050/node_modules/zone.js/dist/zone.js:502:17)
Evaluating http://localhost:8050/app/app.module.js
Error loading http://localhost:8050/app/app.module.js as "./app.module" from http://localhost:8050/app/main.js
похоже, он не может найти мой
app/app.module.js
но, как я уже сказал, У меня не было этой проблемы с firefox и chrome.
Я немного посмотрел в интернете и нашел что-то о многослойных прокладках.. поэтому я попытался включить в свой индекс следующее.HTML-код
<script src="/node_modules/core-js/client/shim.min.js"></script>
<script src="/node_modules/systemjs/dist/system-polyfills.src.js"></script>
Я надеялся, что это позволит быстро исправить, но похоже, что это не так. Есть ли у кого-нибудь рекомендации о том, как действовать с этого момента?
Edit:
я обнаружил 404, что я попадаю внутрь веб-консоли IE 11.
похоже, запрос пытается ударить
URL Protocol Method Result Type Received Taken Initiator Wait Start Request Response Cache read Gap
/node_modules/systemjs/dist/Promise.js.map HTTP GET 404 text/html 210 B 16 ms XMLHttpRequest 140 0 16 0 0 5266
или обещание.js.карту в systemjs папка, а у меня ее нет.
Итак, несколько новых вопросов
1) Почему этот запрос не делается/не требуется, в других браузерах, которые я пробовал?
2) Что делает этот файл, где я могу его получить? Я все еще не уверен, что мои синтаксические ошибки очистятся после захвата этого, но это кажется разумным местом для начала.
Я также заметил, что после удаления / комментирования
<script src="/node_modules/systemjs/dist/system-polyfills.src.js"></script>
запрос обещать.js.карта больше не создается. Поэтому я не уверен, что именно делает polyfil, но, похоже, вводит этот запрос, который приводит к 404.
Edit 2:
Я попытался переключить цель ES6, найденную в моем tsconfig.json, к цели ES5, как подробно здесь. Теперь, когда я пытаюсь построить, я получаю множество других проблем, трассировка стека может быть хорошо описана этот пост.
переключившись на ES5 target, у меня нет доступ к карте, обещание и т. д...
Я пробовал посмотреть на некоторые исправления для этого вопроса, такие как добавление этого
///<reference path="node_modules/angular2/typings/browser.d.ts"/>
в верхней части моей главной.TS-файл, но у меня нет папки angular2, вместо этого у меня есть папка @angular. И каталог typings нигде не найти. Я создаю / развертываю эту вещь с gradle, поэтому я не смогу установить npm на свою локальную машину и назвать ее днем...
edit 3: я предложил награду за этот. Недавно я попробовал другую прокладку.
<script src="/node_modules/core-js/client/shim.min.js"></script>
это все еще не работает для меня. Я получаю ту же синтаксическую ошибку.
глядя на мой основной.файл TS
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';
platformBrowserDynamic().bootstrapModule(AppModule);
если я прокомментирую 3-ю строку, ошибки в веб-консоли исчезнут,но теперь, конечно, мое приложение не загружается.
просто для удовольствия, вот мой tsconfig.в JSON
{
"compilerOptions": {
"target": "es6",
"module": "system",
"moduleResolution": "node",
"experimentalDecorators": true
},
"exclude": [
"node_modules",
"jspm_packages"
]
}
1 ответов
Я, наконец, понял это, это было нелегко. Мне нужно было исправить несколько вещей.
1) мне нужно было установить мою "цель" в tsconfig.json to "es5"
{
"compilerOptions": {
"target": "es6", ==> "target" : "es5",
"module": "system",
"moduleResolution": "node",
"experimentalDecorators": true
},
"exclude": [
"node_modules",
"jspm_packages"
]
}
2) мне нужно было включить правильную прокладку в индекс.html файл
<script src="/node_modules/core-js/client/shim.min.js"></script>
после выполнения этих 2 вещей у меня все еще была огромная трассировка стека на шаге TS - > JS transpile в моем процессе сборки, с такими вещами, как это
node_modules/rxjs/operator/toPromise.d.ts(7,59): error TS2304: Cannot find name 'Promise'.
node_modules/rxjs/operator/toPromise.d.ts(7,69): error TS2304: Cannot find name 'Promise'.
node_modules/rxjs/operator/toPromise.d.ts(9,9): error TS2304: Cannot find name 'Promise'.
node_modules/rxjs/operator/toPromise.d.ts(10,26): error TS2304: Cannot find name 'Promise'.
node_modules/rxjs/operator/toPromise.d.ts(10,36): error TS2304: Cannot find name 'Promise'.
3) Последний шаг, мне нужно явно включить этот ссылка
/// <reference path= "../node_modules/typescript/lib/lib.es6.d.ts" />
в верхней части моего приложения / main.файл ТС.
после выполнения этих 3 шагов и перестройки проекта, вещи, наконец, начали работать над IE.