Итак, я работаю над проектом NG2 + Typcript + SystemJS. Я следил за официальным угловым быстрым запуском, и мой проект отлично работает ... пока я не использую Gulp для компиляции TS и перемещения источник в каталог dist. Вот структура каталога:Default Extension Not Working - SystemJS
По умолчанию вывод компилятора TS файлы JS прямо рядом с Src файлов в приложение и сайт работал нормально. Однако я сконфигурировал его для вывода на dist, как показано выше, и теперь он не работает. Похоже, что он может найти main.js в dist, но он не может найти другие файлы, такие как dist/services/*, и похоже, что причиной является то, что SystemJS не добавляет расширение по умолчанию «js».
index.html
<base href="/">
<title>Angular 2 QuickStart</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.6.0/pure-min.css">
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.6.0/grids-responsive-min.css">
<link rel="stylesheet" href="styles/structure.css">
<link rel="stylesheet" href="styles/styles.css">
<link rel="stylesheet" href="styles/skins/minimal.css">
<link rel="stylesheet" href="styles/skins/usb.css">
<!-- 1. Load libraries -->
<!-- IE required polyfills, in this exact order -->
<script src="node_modules/es6-shim/es6-shim.min.js"></script>
<script src="node_modules/systemjs/dist/system-polyfills.js"></script>
<script src="node_modules/angular2/es6/dev/src/testing/shims_for_IE.js"></script>
<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>
<script src="node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="node_modules/angular2/bundles/router.dev.js"></script>
<script src="node_modules/angular2/bundles/http.dev.js"></script>
<!-- 2. Configure SystemJS -->
<script>
System.config({
packages: {
dist: {
format: 'register',
defaultExtension: 'js',
defaultJSExtension: true
}
}
});
System.import('dist/main')
.then(null, console.error.bind(console));
</script>
Loading ...
Обратите внимание, что когда я ставлю:
System.import('app/main')
.then(null, console.error.bind(console));
И установить компилятор для вывода вместе с исходными файлами, все это отлично работает. Но когда я переключаю импорт на dist/main, он терпит неудачу, как упоминалось выше.
Q Как получить SystemJS для добавления расширения JS по умолчанию в этой ситуации?
Можете ли вы опубликовать образец заявления импорта из того, где вы используете службы (файл .ts в каталоге приложения)? Кроме того, при использовании свойства defaultExtension вам не нужен defaultJSExtension one. – fuudge