使用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
相关产品推荐
相关产品推荐

