You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用awesome-phonenumber NPM包验证手机号时纯数字参数报错

问题根因

yargs 默认开启了参数自动类型解析,当你传入的-n参数值是纯数字的9912345678时,yargs会自动将其解析为Number类型,而awesome-phonenumber的验证方法仅接受字符串类型的入参,因此抛出类型错误。
而传入+919912345678或者09912345678时,参数包含非数字字符,yargs不会将其转为数字,保持字符串类型,所以运行正常。

修复方案

方案1:显式指定yargs参数的类型为字符串

在yargs的配置中,给n参数指定type: 'string',强制yargs不管参数内容是什么,都解析为字符串类型,示例代码:

const argv = require('yargs')
  .option('n', {
    alias: 'phone',
    type: 'string', // 核心配置,强制字符串类型
    demandOption: true,
    describe: '要验证的印度手机号'
  })
  .argv

方案2:调用验证方法前强制转字符串

如果不想修改yargs配置,也可以在把参数传给awesome-phonenumber之前,手动转为字符串:

const phoneNumber = String(argv.n)
// 后续把phoneNumber传给验证方法即可
验证方法

修复完成后运行测试命令:
node index.js -n 9912345678
即可正常输出验证结果,不再抛出类型错误。

内容的提问来源于stack exchange,提问作者Sumith Emmadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:24:06