Javascript ESlint错误,类型为';()=>;承诺<;无效>';类型';中缺少以下属性;承诺<;无效>';:然后,最终捕获[Symbol.toStringTag]

Javascript ESlint错误,类型为';()=>;承诺<;无效>';类型';中缺少以下属性;承诺<;无效>';:然后,最终捕获[Symbol.toStringTag],javascript,typescript,eslint,typescript-eslint,Javascript,Typescript,Eslint,Typescript Eslint,我得到一个错误,只能通过添加any作为返回值来修复 export const dbConnections: any = {}; export const connectDb: Promise<void> = async () => { if (dbConnections.isConnected) { return; } try { const db = await mongoose.connect(config.get

我得到一个错误,只能通过添加
any
作为返回值来修复

export const dbConnections: any = {};

export const connectDb: Promise<void> = async () => {
    if (dbConnections.isConnected) {
        return;
    }

    try {
        const db = await mongoose.connect(config.get('mongoURI'), {
            useNewUrlParser: true,
            useUnifiedTopology: true,
            useFindAndModify: false,
            useCreateIndex: true,
        });

        dbConnections.isConnected = db.connections[0].readyState;
    } catch (err) {
        createError('Error caught connecting to db!', err);
    }
};
export const dbConnections:any={};
export const connectDb:Promise=async()=>{
if(dbConnections.isConnected){
返回;
}
试一试{
const db=await mongoose.connect(config.get('mongoURI'){
useNewUrlParser:true,
useUnifiedTopology:正确,
UseFindModify:false,
useCreateIndex:true,
});
dbConnections.isConnected=db.connections[0]。readyState;
}捕捉(错误){
createError('连接到数据库时出错!',err);
}
};
这是一个错误

export const connectDb: Promise<void> = async () => {
                                        ^^^^^^^^^^^^^
Type '() => Promise<void>' is missing the following properties
  from type 'Promise<void>': then, catch, [Symbol.toStringTag], finally
export const connectDb:Promise=async()=>{ ^^^^^^^^^^^^^ 类型“()=>Promise”缺少以下属性 来自类型“Promise”:然后,catch,[Symbol.toStringTag],finally
如果我做了
any
而不是
Promise
,那么错误就会消失,但这显然不是我试图解决的问题。如何修复此lint错误?

问题在函数声明中。您需要将返回类型指定为
Promise

export const connectDb=async():Promise=>{ if(dbConnections.isConnected){ 返回; } 试一试{ const db=await mongoose.connect(config.get('mongoURI'){ useNewUrlParser:true, useUnifiedTopology:正确, UseFindModify:false, useCreateIndex:true, }); dbConnections.isConnected=db.connections[0]。readyState; }捕捉(错误){ createError('连接到数据库时出错!',err); } };
typescript中的异步函数返回承诺值

像这样:

export const dbConnections:any={};
export const connectDb:()=>Promise=async()=>{
...
};

因为您正在将函数分配给
connectDb
而不是promise。您需要将类型设置为
()=>promise
,或者将其更改为已执行函数的值(可能通过使用IIFE)。此外,这不是lint错误-这是编译器错误。TS通过提醒您希望作为
connectDb
拥有的内容与
connectDb
实际拥有的内容不匹配,从而正确地完成了工作。将其设置为
export const connectDb=async():Promise=>{
成功了,谢谢。我只想指出,这是一个带有TS的现有项目,仅在一小时前,我决定在教程之后将ESLint添加到该项目中,从那时起,我就开始出现此错误。谢谢,我在
export const connectDb = async (): Promise<void> => {
    if (dbConnections.isConnected) {
        return;
    }

    try {
        const db = await mongoose.connect(config.get('mongoURI'), {
            useNewUrlParser: true,
            useUnifiedTopology: true,
            useFindAndModify: false,
            useCreateIndex: true,
        });

        dbConnections.isConnected = db.connections[0].readyState;
    } catch (err) {
        createError('Error caught connecting to db!', err);
    }
};