我正在Angular应用程序中使用NPM模块ip
(https://www.npmjs.com/package/ip)进行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环境中可用,而在浏览器中不可用。
有人知道是否有变通办法可以在Angular编译应用程序中使用ip
npm模块吗?
谢谢,
ip
库是NodeJs特定的库,因为它依赖于os
。在某些情况下,使用browserfy可以使您的节点程序包在浏览器中运行,这可能会有些运气。但是,我认为它不适用于此。
我建议将此逻辑移至您的服务器。如果您使用的是节点,则只需在其中添加包,然后在API端点处显示IP地址即可。您可以按照自己的意愿使用该库。
在Dev中运行时在本地运行的唯一原因是Angular此时正在运行节点服务器。将所有内容捆绑在一起后,就只有一堆捆绑的HTML和JS。