为啥这个打字稿程序永无止境?
Posted
技术标签:
【中文标题】为啥这个打字稿程序永无止境?【英文标题】:Why is this typescript program never ending?为什么这个打字稿程序永无止境? 【发布时间】:2020-05-06 18:21:24 【问题描述】:我已经在 typescript 中为 oclif 编写了这个登录命令 (Login.ts)。它应该在cli的登录命令中获取一些信息,然后使用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
它运行正常,但它永远不会终止,为什么?我该如何解决这个问题?
【问题讨论】:
在我看来,将 await 与回调一起使用看起来有点时髦。 await 有助于承诺,但我认为它不适用于这样的回调模式。也许尝试从您的代码中删除async
和 await
并尝试。
【参考方案1】:
我的猜测是数据库connection is not closed 因此程序不会终止。
【讨论】:
以上是关于为啥这个打字稿程序永无止境?的主要内容,如果未能解决你的问题,请参考以下文章