开源离线IP定位数据管理框架——Ip2Region

张开发
2026/4/7 1:56:30 15 分钟阅读

分享文章

开源离线IP定位数据管理框架——Ip2Region
一、安装npm install ip2region二、使用方式(utils/ipSearch.js)// utils/ipSearch.js const IP2Region require(ip2region).default; // 重点根据刚才的定义这里要取 .default let query null; try { // 按照定义直接 new 即可它会自动找默认数据库 query new IP2Region(); } catch (err) { console.error(IP属地库加载失败:, err); } const getIpProvince (ip) { if (!query) return 未知; try { // 过滤本地 IP if (ip 127.0.0.1 || ip ::1 || ip.startsWith(192.168)) { return 内网; } // 调用你刚才看到的 search(ipaddr: string): IP2RegionResult | null const result query.search(ip); if (result) { // result 结构{ country: 中国, province: 广东省, city: 深圳市, isp: 电信 } if (result.country 中国) { // 抖音模式只显示省份去掉多余字样 return (result.province || result.city || 未知) .replace(/省|市|自治区|特别行政区/g, ); } else { // 国外显示国家名如果是 0 则显示未知 return result.country ! 0 ? result.country : 未知; } } } catch (err) { console.error(IP解析逻辑出错:, err); } return 未知; }; module.exports { getIpProvince };为什么这样写require(ip2region).default: 你看到的源码是 export default class在 Node.js 环境下使用 require 时必须通过 .default 才能拿到这个类。对象化处理: 既然 search 返回的是 IP2RegionResult 对象我们直接访问 result.province 即可既安全又优雅。容错处理: 你看到的定义里 search 可能返回 null所以我们加了 if (result) 判断。

更多文章