Unable Validate Number with Awesome-Phonenumber Npm Package?

I have created a Javascript with awesome-phonenumber npm package.

  • index.js
const yargs = require('yargs');
var PhoneNumber = require( 'awesome-phonenumber' );

const argv = yargs
    .usage('Usage: $0 -n [num]')
    .command('login', '(login)', {
        number: {
            description: 'number',
            type: 'number',
        }
    })
    .option('phoneNumber', {
        alias: 'n',
        description: 'number',
        type: 'charecter',
    })
    .option('json', {
         alias :'json',
         description: 'To print output in json',
         type: 'boolean',
    })
    .help()
    .alias('help', 'h')
    .argv;

if (argv._[0] == 'login') {
     console.log ("Login");
     process.exit();
}

if (argv.n) {
    var pn = PhoneNumber( argv.n, 'IN' );
    if (!pn.isValid( )) {
        console.log("! Invalid number");
        return false;
    } else {
        console.log(JSON.stringify( pn, null, 4 ));
    }
}

when i run node index.js -n +919912345678 or node index.js -n 09912345678 it is working fine.

PS C:\Users\anil kumar jilla\truecaller-nodejs> node index.js -n +919912345678
{
    "number": {
        "input": "+919912345678",
        "international": "+91 99123 45678",
        "national": "099123 45678",
        "e164": "+919912345678",
        "rfc3966": "tel:+91-99123-45678",
        "significant": "9912345678"
    },
    "regionCode": "IN",
    "valid": true,
    "possible": true,
    "canBeInternationallyDialled": true,
    "type": "mobile",
    "possibility": "is-possible"
}

when i run node index.js -n 9912345678. it is showing this error.

PS C:\Users\anil kumar jilla\truecaller-nodejs> node "c:\Users\anil kumar jilla\truecaller-nodejs\index.js"
PS C:\Users\anil kumar jilla\truecaller-nodejs> node index.js -n 9912345678
C:\Users\anil kumar jilla\truecaller-nodejs\node_modules\awesome-phonenumber\lib\index.js:528
function V(a,b){if(!(this instanceof V))return new V(a,b);if("string"===typeof a)var c=!1;else try{bb(a),c=!0}catch(e){c=!1}let d;if(!c&&"string"!==typeof a)throw Error("Invalid phone number, expected a string");if(!c&&null!=b&&"string"!==typeof b)throw Error("Invalid region code, expected a string");c||(a=a.trim(),b&&"+"===a.charAt(0)&&(b=null),b||({ea:b=null,parsed:d}=Db(a)));this.g={number:{},regionCode:b,valid:!1,possible:!1};if(c)this.h=a;else{this.h=null;this.g.number.input=a;if(!b){this.g.possibility=

                                   ^

Error: Invalid phone number, expected a string
    at new V (C:\Users\anil kumar jilla\truecaller-nodejs\node_modules\awesome-phonenumber\lib\index.js:528:164)
    at V (C:\Users\anil kumar jilla\truecaller-nodejs\node_modules\awesome-phonenumber\lib\index.js:528:48)
    at Object.<anonymous> (C:\Users\anil kumar jilla\truecaller-nodejs\index.js:33:14)
    at Module._compile (internal/modules/cjs/loader.js:999:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
    at internal/main/run_main_module.js:17:47

I created a test.js to see the code is working or not

  • test.js
var PhoneNumber = require( 'awesome-phonenumber' );
const number = "9912345678"
var pn = PhoneNumber(number , 'IN' );
if (!pn.isValid()) {
    console.log("! Invalid number");
    return false;
} else {
    console.log(JSON.stringify( pn, null, 4 ));
}

then it is working

i dont know what the mistake i did

2 Answers

Just convert your input in string, it will work.

if (argv.s.toString()) {
    var pn = PhoneNumber( argv.s.toString(), 'IN' );
    if (!pn.isValid( )) {
        console.log("!invalid number");
        return false;
    } else {
        console.log(JSON.stringify( pn, null, 4 ));
    }
}

+91 or 0091 are the region codes for India. The 091 or +01 are strings, whereas in your second failing example it is not.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Alexander Ross

Alexander Ross

Gaming, Esports & Interactive Media Writer

Alexander Ross has covered the video game industry for a decade, writing deep dives on game design, esports tournaments, VR developments, and gaming culture.

Share this article
Twitter Facebook Pinterest