Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这个打字脚本程序永远不会结束?_Javascript_Node.js_Typescript_Express_Jwt - Fatal编程技术网

Javascript 为什么这个打字脚本程序永远不会结束?

Javascript 为什么这个打字脚本程序永远不会结束?,javascript,node.js,typescript,express,jwt,Javascript,Node.js,Typescript,Express,Jwt,我已经用typescript为oclif编写了这个登录命令(login.ts)。它应该在cli的login命令中获取一些信息,然后使用jwt创建一个令牌并将其写入文件中 import Command from '@oclif/command' import axios from 'axios' import {flags} from '@oclif/command' const bcrypt = require('bcrypt'); process.env["NODE_TLS_REJECT_U

我已经用typescript为oclif编写了这个登录命令(login.ts)。它应该在cli的login命令中获取一些信息,然后使用jwt创建一个令牌并将其写入文件中

import Command from '@oclif/command'
import axios from 'axios'
import {flags} from  '@oclif/command'
const bcrypt = require('bcrypt');
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;
export class LoginCommand extends Command {
  static flags = { 
    user: flags.string({dependsOn:['passw']}),
    //email: flags.string({dependsOn:['passw'],exlucsive:['user']}),
    passw: flags.string()
  }

  async run() {
        const {flags} = this.parse(LoginCommand); 
        var mysql=require('mysql')
        var connection=mysql.createConnection({
            host: 'localhost',
            user: 'root',
            password: 'Vangelis98!',
            database: 'vag'
        });
        await connection.query(`SELECT user,pass,email,quotas FROM users WHERE user=?`,[`${flags.user}`], function (err, result, fields) {
                if (err) throw err;
                console.log(`${flags.user}`);
                console.log(result[0].pass);
                const password=result[0].pass;
                if(bcrypt.compareSync(`${flags.passw}`, password)) {
                    var fs=require('fs');
                    var privateKey = fs.readFileSync('private.key');
                    var jwt=require('jsonwebtoken');
                    var token = jwt.sign({user:`${flags.user}`,passw:`${flags.passw}`}, privateKey, { algorithm: 'RS256' });
                    fs.writeFileSync("temptoken.txt",token);
                } else {
                    console.log("Wrong username or password\n");
                }       
         });

  }
}
我运行的命令文件如下所示:

energy Login --user afro --passw whatever12

它运行正常,但从未终止,为什么?如何修复此问题?

我的猜测是数据库,因此程序不会终止。

使用带有回调的wait看起来有点古怪。等待承诺的帮助,但我认为它不适用于这样的回调模式。也许可以尝试从代码中删除
async
一个
await
,然后再试一次。