Библиотека служебных IP-адресов для Angular - PullRequest
0 голосов
/ 20 апреля 2020

Я использую NPM module ip (https://www.npmjs.com/package/ip) в приложении Angular для некоторого анализа / сравнения IP-адресов. Все работало нормально, но когда я пытаюсь собрать приложение для производства, используя ng build --prod --aot, компилятор жалуется на следующую ошибку:

ERROR in ./node_modules/ip/lib/ip.js Module not found: 
Error: Can't resolve 'os' in '/home/fel/Documentos/proyectos/IPGes/node_modules/ip/lib

Кажется, что ошибка возникает, потому что он пытается использовать модуль os, который доступен только в среде node.js, а не в браузере.

Кто-нибудь знает, есть ли обходной путь, позволяющий использовать модуль ip npm в Angular скомпилированное приложение?

Заранее спасибо,

Ответы [ 2 ]

2 голосов
/ 20 апреля 2020

Библиотека ip является библиотекой NodeJs speci c, поскольку она зависит от os. В некоторых случаях вам может повезти, используя browserfy , чтобы заставить ваши пакеты узлов работать в браузере. Однако я не думаю, что это сработает.

Я бы предложил перенести эту логику c на ваш сервер. Если вы используете узел, просто добавьте туда пакет и обнаружили конечную точку API, чтобы опубликовать IP-адрес. Кстати, вы можете использовать библиотеку, как вы sh.

Единственная причина, по которой это работает локально при работе в Dev, заключается в том, что Angular в этот момент запускает сервер узлов. Как только вы соберете все вместе, это будет просто связка HTML и JS.

0 голосов
/ 21 апреля 2020

На всякий случай, если у кого-то возникнет такая же проблема, я удалил библиотеку ip (которая является отличным инструментом, но для проектов Node) и использовал ipaddr.js (https://www.npmjs.com/package/ipaddr.js), которая есть все методы, которые мне нужны в приложении.

Приветствия,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...