2016-04-08 3 views
0

Итак, я работаю над проектом NG2 + Typcript + SystemJS. Я следил за официальным угловым быстрым запуском, и мой проект отлично работает ... пока я не использую Gulp для компиляции TS и перемещения источник в каталог dist. Вот структура каталога:Default Extension Not Working - SystemJS

enter image description here

По умолчанию вывод компилятора TS файлы JS прямо рядом с Src файлов в приложение и сайт работал нормально. Однако я сконфигурировал его для вывода на dist, как показано выше, и теперь он не работает. Похоже, что он может найти main.js в dist, но он не может найти другие файлы, такие как dist/services/*, и похоже, что причиной является то, что SystemJS не добавляет расширение по умолчанию «js».

enter image description here

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 по умолчанию в этой ситуации?

+0

Можете ли вы опубликовать образец заявления импорта из того, где вы используете службы (файл .ts в каталоге приложения)? Кроме того, при использовании свойства defaultExtension вам не нужен defaultJSExtension one. – fuudge

ответ

2

Кажется, вы проецируете структуру же, как мой проект я настроил мои настройки проекта, как это -

<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script> 
<script src="node_modules/es6-shim/es6-shim.min.js"></script> 
<script src="node_modules/systemjs/dist/system.src.js"></script> 
<script> 
    System.config({ 
       defaultJSExtensions: true, 
       map: { 
        rxjs: 'node_modules/rxjs' 
       }, 
       packages: { 
        rxjs: { 
        defaultExtension: '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/rxjs/bundles/Rx.js"></script> 
<script> 
    System.import('dist/app'); 
</script> 

пожалуйста, обратитесь к этой надежде репо это может помочь вам-

https://github.com/MrPardeep/Angular2-DatePicker

+2

Строка defaultJSExtensions: true сделал трюк для меня – unkreativ