2016-01-15 2 views
7

Я пытаюсь настроить базовое приложение Angular 2 с помощью TypeScript. Но я застрял, потому что SystemJS, похоже, ничего не делает с опцией defaultExtension: 'js'.DefaultExtension не работает в приложении Angular 2

Мой index.html выглядит следующим образом:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <base href="/test/"> 
    <meta charset="UTF-8"> 
    <title>Test</title> 

    <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet"> 
    <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> 
    System.config({ packages: { app: { format: 'register', defaultExtension: 'js', } } }); 
    System.import('backend/app/boot') 
     .then(null, console.error.bind(console)); 
    </script> 
</head> 
<body> 
    <app>Loading</app> 
</body> 
</html> 

Но это потом дает мне следующую ошибку:

GET http://localhost:1122/test/backend/app/boot 404 (Not Found) 

I может добавить расширение .js на пути в команде System.import, так что это выглядит следующим образом:

System.import('backend/app/boot.js') 

Тогда найти boot.js, но тогда он жалуется, что он не может найти app.component. Поэтому в основном я должен добавить расширение .js для этого импорта, а также для каждого другого компонента, который я буду иметь в своем приложении.

Я не думаю, что это решение, для которого я должен идти. Итак, как я могу исправить эту проблему System.import? Похоже, что по какой-то причине он игнорирует defaultExtension: 'js'.

ответ

8

Вы устанавливаете js как расширение по умолчанию для app пакета, но ваш код в backend/app, не app, либо удалить папку бэкэнд или исправить пакет конфигурации.

2

Просто попробуйте Angular2 и у вас такая же проблема. Я предполагаю, что другой вариант может использовать baseURL. Например:

System.config({ 
     baseURL: 'backend/', 
     packages: { 
       app: { 
        format: 'register', 
        defaultExtension: 'js', 
       } 
     } 
}); 

System.import('app/boot') 
     .then(null, console.error.bind(console)); 
1

У меня была такая же проблема, я мог бы найти следующее решение. Используйте карту, чтобы добавить дополнительный путь к папке вашего приложения, как это

System.config({ 
     packages: { 
      app: { 
       format: 'register', 
       defaultExtension: 'js' 
      } 
     }, 
     map: { 'app': './backend/app' } 
    }); 
    System.import('app/boot'); 
Смежные вопросы