Я создал Javascript с пакетом npm awesome-phonenumber.

  • 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 ));
    }
}

Когда я запускаю node index.js -n +919912345678 или node index.js -n 09912345678, он работает нормально.

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"
}

Когда я бегу node index.js -n 9912345678. он показывает эту ошибку.

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

Я создал test.js, чтобы убедиться, что код работает или нет

  • 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 ));
}

Тогда это работает

Я не знаю, какую ошибку я сделал

1
Emmadi Sumith Kumar 15 Окт 2021 в 19:08

2 ответа

Лучший ответ

Просто преобразуйте введенные вами данные в строку, и все будет работать.

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 ));
    }
}
0
Vikas Das 15 Окт 2021 в 17:11

+91 или 0091 - это коды регионов Индии. 091 или +01 - это строки, тогда как в вашем втором неудачном примере это не так.

0
ParthianShotgun 15 Окт 2021 в 16:39