2016-05-24 1 views
1

Это для systemjs библиотеки, не systemjs-строительКак сказать systemjs игнорировать импорт

я мог бы иметь немного краевой случае здесь. Но я пытаюсь настроить внешнее веб-приложение для запуска его модульных тестов в командной строке. Моя настройка в настоящее время создает машинописный текст в формате регистра , и нагрузки импортируются на сайт в соответствии с их спецификациями. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что одна из моих зависимостей reflect-metadata имеет систему автоматического обнаружения узлов, которая вызывает вызов require('crypto'), который является модулем нативного узла (недоступным в npm). Ошибка я получаю это:

Error: ENOENT: no such file or directory, open '/Users/path/to/project/node_modules/crypto.js'

Есть много вещей в игре здесь, я понимаю, но поведение я после того, как для systemjs полностью игнорирующих require('crypto') вызов и позволяет ему проходить через совершенно неизменным, как узел будет правильно загружать это во время выполнения.

Из-за многомодульного корпоративного приложения, которое мы создаем, я действительно не имею возможности экспортировать машинописный текст в commonjs из-за подзависимостей, получающих версию Systemjs, а не из temp commonjs build. (Единственный способ сделать это было бы включить CommonJS версию в нашем частном НОГО DIST сборки, которая далека от идеала)

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

System.config({ 
    defaultJSExtensions: true, 
    map: { 
    'angular2': 'node_modules/angular2', 
    'reflect-metadata': 'node_modules/reflect-metadata/Reflect', 
    'crypto': 'node_modules/crypto' 
    } 
    // packages: { 
    // 'reflect-metadata': { 
    //  format: 'global', 
    //  exports: 'Reflect', 
    //  defaultExtension: false, 
    //  meta: { 
    //  '*': { 
    //   defaultExtension: false 
    //  } 
    //  } 
    // } 
    // } 
    // meta:{ 
    // 'reflect-metadata/Reflect':{ 
    //  format: 'global', 
    //  exports: 'Reflect', 
    //  defaultExtension: false 
    // } 
    // } 
}); 

ответ

4

игнорировать требуют вы можете отобразить его на @empty модуля в вашем конфигурационном файле SystemJS. вы можете сделать это, добавив System.config({ map: { 'crypto': '@empty' } })