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