2016-07-22 6 views
8

Я хочу использовать библиотеку ip-address с SystemJS (примечание, this question может выглядеть похоже, но это другая проблема, с которой я столкнулся при попытке выполнить эту задачу).«Импорт имен» импорт в systemJS

Библиотечный ip-адрес зависит от использования-deprecate. Она импортирует его следующим образом:

var util = require('util'); 

А затем использует его следующим образом:

Address4.prototype.toV6Group = 
    util.deprecate(Address4.prototype.toGroup6, 
    'deprecated: `toV6Group` has been renamed to `toGroup6`'); 

Когда я импортировать IP-адрес в проекте узла как ...

var ipAddress = require('ip-address'); 

.. тогда у меня нет никаких проблем.

Когда я импортировать IP-адрес в проекте SystemJS ...

System.import('ip-address'); 

... тогда я получаю сообщение об ошибке:

util.deprecate is not a function 

Как я могу настроить SystemJS выполнить этот импорт? В настоящее время я его настройки, как так ...

const map: any = { 
    'ip-address':'vendor/ip-address', 
    'util':'vendor/util-deprecate' 
} 

const packages: any = { 
    'ip-address': {main:'ip-address.js'}, 
    'util': {main: 'browser'} 
}; 

Просто, чтобы сохранить поиск, файл browser.js в Util-принизить является here, она экспортирует функцию принизить непосредственно.

Обратите внимание, что я могу получить эту работу, если я изменить модуль IP-адрес, так что все вызовы имеют вида:

Address4.prototype.toV6Group = 
    util(Address4.prototype.toGroup6, 
    'deprecated: `toV6Group` has been renamed to `toGroup6`'); 

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

ответ

5

Хорошо, получилось, что проблема была в том, что я думал модуль ip-address использовал util-deprecate. Оказывается, что путь ip-address модуль импортировала Util ...

var util = require('util'); 

Это не импортировала util-deprecate но импортирования Node встроенный в пакет util. Итак, для того чтобы ip-address действительно использовать util-deprecate, необходимо внести изменения в модуль ip-address.

3

Поскольку вы отметили , есть довольно простое решение.

Использование jspm вы можете просто установить ip-address прямо из npm с помощью:

jspm install npm:ip-address 

, который будет делать все управление в зависимость для вас.

Я проверил это в браузере и Node.js с использованием примера кода ip-address обеспечивает:

import {Address6} from 'ip-address' 

const address = new Address6('2001:0:ce49:7601:e866:efff:62c3:fffe'); 

console.log(address.isValid()); // true 

const teredo = address.inspectTeredo(); 

console.log(teredo.client4); // '157.60.0.1' 

и она работает совершенно нормально.

+0

Было исправлено 4 дня назад https://github.com/beaugunderson/ip-address/pull/34 – Pace

+0

@Pace ohh sweet, поэтому он работает. Ну, это просто неясно из вашего вопроса, если это то, что вы пробовали. – mash

+0

Без проблем, извините за замешательство. – Pace

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

  • Нет связанных вопросов^_^