2016-05-11 2 views
0

Я создаю приложение Angular2 в основном проекте ASP.Net. У меня есть systemJS, настроенный для сопоставления сторонних модулей, но я получаю ошибки компиляции.Как машинопись знает о systemJS config

Мой index.html ссылается на файл systemJS.config.js, и я думаю, что это правильно. Однако index.html - это файл времени выполнения, и я не думаю, что компилятор машинописного текста знает об этом.

Как машинопись знает о systemjs (и его конфигурации) во время компиляции?

Один из сторонних модулей - загрузка файла ng2.

systemjs.config.js имеет это:

var map = { 
     'app': 'lib/spa', // 'dist', 
     'rxjs': 'lib/js/rxjs', 
     'angular2-in-memory-web-api': 'lib/js/angular2-in-memory-web-api', 
     '@angular': 'lib/js/@angular', 
     'ng2-file-upload': 'lib/js/ng2-file-upload/ng2-file-upload' 
    }; 
    var config = { 
     defaultJSExtensions: true, 
     map: map, 
     packages: packages 
    } 
    System.config(config); 

Это ссылка из index.html как:

<script> 
    System.import('app').catch(function(err){ console.error(err); }); 
</script> 

В моем компоненте я использую импорт, как это:

import {FILE_UPLOAD_DIRECTIVES, FileUploader} from 'ng2-file-upload'; 

Я получаю эту ошибку компилятора:

error TS2307: Cannot find module 'ng2-file-upload'.

Моя мысль заключается в том, что машинопись не знает о настройке псевдонима ng2-file-upload на карте для systemJS. Как машинопись знает об этом?

ответ

0

Здесь вы идете.

Как машинопись знает о systemjs (и его конфигурации) во время компиляции?

Возможно, у вас может быть папка с типизиями внутри вашего проекта, которая должна состоять из определений для systemjs, которые получают вас intellisense. и для компиляции Typcript следует за соглашением для Module Resolution - Typescript.

Для третьей партии библиотеки NG2-файл-загрузки

Я вижу, есть конфигурации, как показано ниже в файле конфигурации системы, я думаю, в то время как строительство вы помещаете файл для этого модуля из node_modules к lib/js папка.

'ng2-file-upload': 'lib/js/ng2-file-upload/ng2-file-upload' 

В идеале, если у вас есть node_modules в проекте Машинопись будет решить его с помощью Module Resolution конвенции.

Если у вас нет обычной структуры папки машинописный не может быть в состоянии решить модуль,

Однако вы можете включить --noResolve

Использование --noResolve

Обычно компилятор попытается разрешить все импорт модулей до начала процесса компиляции. Каждый раз, когда он успешно разрешает импорт файла, файл добавляется к набору файлов, которые компилятор будет обрабатывать позже.

Параметры компилятора --noResolve инструктируют компилятор не «добавлять» любые файлы в компиляцию, которые не были переданы в командной строке. Он по-прежнему будет пытаться разрешить модуль для файлов, но если файл не указан, он не будет включен.

Не уверен, что при таком подходе вам, возможно, придется попробовать и посмотреть.

Надеюсь, что это поможет!

Смежные вопросы