【问题标题】:Wrong use of CDN (libphonenumber-js) or CDN not working?错误使用 CDN (libphonenumber-js) 或 CDN 不起作用?
【发布时间】:2021-10-04 18:42:39
【问题描述】:

我正在尝试使用库 libphonenumber-js。

<body>

    <script src="https://unpkg.com/libphonenumber-js@1.9.9/bundle/libphonenumber-min.js"></script>

    <script src="./js/main.js"></script>

</body>

在我的 main.js 中,我尝试编写一个来自 libphonenumber-js 文档的简单代码:

    const phoneNumber = parsePhoneNumber('+12133734253');

但是我得到了这个错误。与文档中的其他函数相同。

Uncaught ReferenceError: parsePhoneNumber is not defined

在我的网络选项卡中,我可以看到正在下载 min.js 文件。但它的功能由于某种原因无法使用。我尝试制作一个 min.js 文件并使用它,但没有运气。

我还尝试了许多不同的 CDN 服务,它们也托管了这个库。

【问题讨论】:

标签: javascript cdn libphonenumber


【解决方案1】:

对于任何想知道的人:

我在 repo 的问题页面中发现您必须在函数前面使用 window.libphonenumber 或仅使用 libphonenumber。所以

window.libphonenumber.parsePhoneNumberFromString(
      '(213) 373-42-53 ext. 1234',
      'US'
    );

在我的示例中,正确的函数是 parsePhoneNumberFromString

【讨论】:

    【解决方案2】:

    这为我修复了它,但因为它仍然返回 3 数字,导致字段发生变化,再次触发事件 并使其自动格式化回原来的样子。

    if (value.includes('(') && !value.includes(')')) {
          const tempValue = value.replace('(', '');
          return tempValue.slice(0, tempValue.length - 1);
    }
    

    【讨论】: