2016-11-11 4 views
1

меня всю мою установку здесь: https://github.com/jordymeow/meowbs-2016Почему SystemJS ищет источник-map-support.js?

Я считаю, что это довольно чистый, но он не идеален. Как это, она работает, но в файле index.html, попытайтесь переключить эти комментарии:

//System.import('./app/app'); 
System.import('./src/app.ts'); 

В принципе, вместо того, чтобы использовать скомпилированные JS (выполняется автоматически с помощью редактора Atom), мы могли бы загрузить приложение. ts, но это не работает. SystemJS ищет «source-map-support.js» и терпит неудачу. Я не уверен, зачем мне нужна эта зависимость, и я считаю, что у меня проблема с конфигурацией (или многие из них).

Возможно, вы также увидите много ошибок в этом проекте;) Не стесняйтесь говорить мне.

Благодарим за помощь.

+0

Вы 'погрузчик: typescript' для .ts файлов в ИПВ, и' "машинопись": «НПМ: [email protected] .1 "на карте. Я не уверен, что если машинопись будет работать как загрузчик для systemjs, я бы предложил использовать [typecript plugin для systemjs] (https://github.com/frankwallis/plugin-typescript/). – artem

+0

@artem Я попробовал, и я действительно совершил изменения в GitHub ... Однако, когда я пытаюсь, я получаю точно такую ​​же ошибку. – TigrouMeow

+0

@artem На самом деле у меня было две проблемы, одна из которых вы упомянули, а затем мне пришлось вручную добавить поддержку источника-карты, таким образом: jspm i --dev npm: source-map-support – TigrouMeow

ответ

1

В машинописи 2.1, они добавляют дополнительную зависимость от источника-карты-поддержки - там эта функция в typescript.js:

 tryEnableSourceMapsForHost: function() { 
     try { 
      require('source-map-support').install(); 
     } catch (e) {} 
     }, 

Однако SystemJS не может определить, что это необязательно - для того, чтобы сделать require работать в браузере, он сканирует исходный код для require звонков, пытается загрузить все необходимые модули и не работает.

Вы можете установить модуль источника карты-поддержки, или вы можете просто сопоставить его special module named@empty в jspm.config.js, добавив следующую строку в map:

"source-map-support": "@empty", 

Затем необходимо также добавить defaultExtension: 'ts' до src конфигурации пакета, в противном случае import { AppModule } from "./app.module"; попытается загрузить app.module.js.

В целом, измененный фрагмент в jspm.config.js выглядит

"src": { 
     "defaultExtension": "ts", 
     "meta": { 
     "*.ts": { 
      "loader": "plugin-typescript" 
     } 
     } 
    } 
    }, 

    map: { 
    "source-map-support": "@empty", 
+0

Большое спасибо, это отличный и очень полный ответ! Помогает так много! Еще один вопрос, рекомендуется использовать @empty? – TigrouMeow

+0

Это зависит - если вы собираетесь придерживаться SystemJS, то относительно безопасно предположить, что он будет поддерживаться (в худшем случае вы можете зарегистрировать пустой модуль с любым именем, которое вы хотите, '@ null' или что угодно, используя SystemJS API). В противном случае, если вы уверены, что загрузка 'source-map-support' в браузере не нарушит компиляцию, просто укажите ее как зависимость. – artem

+0

Небольшое обновление, разработчик plug-in-скрипта фактически исправил его, удалив зависимость от исходной-карты-поддержки :) – TigrouMeow