类型 'Promise<ConnectionPool> & void' 缺少类型 'ConnectionPool' 的以下属性
Type 'Promise<ConnectionPool> & void' is missing the following properties from type 'ConnectionPool'
我正在尝试建立连接并return使用 mssql 包访问池。
const sqlConfig = {
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_CATALOG,
server: process.env.SERVER_HOST
}
export async function connect(){
try{
const pool = await sql.connect(sqlConfig)
return pool
}catch(err){
throw err
}
}
然而,当 returning 池时,我收到以下 lint 错误:
Type 'Promise<ConnectionPool> & void' is missing the following properties from type 'ConnectionPool': connected, connecting, healthy, driver, and 26 more.
我应该如何将代码重写为 return 池作为 ConnectionPool 而不是 Promise & void?
作为参考,这里是完整的代码:
import sql, { ConnectionPool } from "mssql"
require('dotenv').config()
const sqlConfig = {
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_CATALOG,
server: process.env.SERVER_HOST
}
export async function connect():Promise<ConnectionPool>{
try{
const pool = await sql.connect(sqlConfig)
return pool
}catch(err){
throw err
}
}
我尝试将变量转换为 ConnectionPool 并显式写入预期的 return 值,如下所示:
export async function connect():Promise<ConnectionPool>{
try{
const pool = await sql.connect(sqlConfig)
return pool as ConnectionPool
}catch(err){
throw err
}
}
我也尝试过为取自 https://github.com/tediousjs/node-mssql/issues/1063 的 @types/mssql 包添加重载,尽管它是一个较旧的 post.
您正在等待一个 promise 正在将 return 值视为 ConnectionPool 对象而不是 promise。
如果你想连接到 return 连接池,请将你的 return 类型更改为 ConnectionPool,如果你仍然希望它 return 承诺删除等待,如下所示并调用你的 connect 功能与 await
export async function connect():Promise<ConnectionPool>{
return sql.connect(sqlConfig);
}catch(err){
throw err
}
}
然后用await connect()
或
调用它
connect().then( (pool ) => {
// Do something with pool here
}
我建议使用 .then 而不是 await
我正在尝试建立连接并return使用 mssql 包访问池。
const sqlConfig = {
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_CATALOG,
server: process.env.SERVER_HOST
}
export async function connect(){
try{
const pool = await sql.connect(sqlConfig)
return pool
}catch(err){
throw err
}
}
然而,当 returning 池时,我收到以下 lint 错误:
Type 'Promise<ConnectionPool> & void' is missing the following properties from type 'ConnectionPool': connected, connecting, healthy, driver, and 26 more.
我应该如何将代码重写为 return 池作为 ConnectionPool 而不是 Promise
作为参考,这里是完整的代码:
import sql, { ConnectionPool } from "mssql"
require('dotenv').config()
const sqlConfig = {
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_CATALOG,
server: process.env.SERVER_HOST
}
export async function connect():Promise<ConnectionPool>{
try{
const pool = await sql.connect(sqlConfig)
return pool
}catch(err){
throw err
}
}
我尝试将变量转换为 ConnectionPool 并显式写入预期的 return 值,如下所示:
export async function connect():Promise<ConnectionPool>{
try{
const pool = await sql.connect(sqlConfig)
return pool as ConnectionPool
}catch(err){
throw err
}
}
我也尝试过为取自 https://github.com/tediousjs/node-mssql/issues/1063 的 @types/mssql 包添加重载,尽管它是一个较旧的 post.
您正在等待一个 promise 正在将 return 值视为 ConnectionPool 对象而不是 promise。
如果你想连接到 return 连接池,请将你的 return 类型更改为 ConnectionPool,如果你仍然希望它 return 承诺删除等待,如下所示并调用你的 connect 功能与 await
export async function connect():Promise<ConnectionPool>{
return sql.connect(sqlConfig);
}catch(err){
throw err
}
}
然后用await connect()
或
connect().then( (pool ) => {
// Do something with pool here
}
我建议使用 .then 而不是 await