gpt4 book ai didi

javascript - 未处理的 promise 拒绝警告 : Unhandled promise rejection (rejection id: 1) in Node. JS

转载 作者:搜寻专家 更新时间:2023-11-01 00:20:44 29 4
gpt4 key购买 nike

您好,我正在尝试调用返回 promise 的异步函数 makeRemoteExecutableSchema

async function run() {
const schema = await makeRemoteExecutableSchema(
createApolloFetch({
uri: "https://5rrx10z19.lp.gql.zone/graphql"
})
);
}

我在构造函数中调用这个函数。

class HelloWorld {
constructor() {
try {
run();
} catch (e) {
console.log(e, e.message, e.stack);
}
}
}

我遇到了这个错误。有谁知道如何解决这个问题?

(node:19168) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'getQueryType' of undefined
(node:19168) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

最佳答案

如果 makeRemoteExecutableScheme() 返回最终拒绝的 promise ,那么您没有代码来处理该拒绝。您可以通过以下两种方式之一处理它:

async function run() {
try {
const schema = await makeRemoteExecutableSchema(
createApolloFetch({
uri: "https://5rrx10z19.lp.gql.zone/graphql"
})
);
} catch(e) {
// handle the rejection here
}
}

或在这里:

class HelloWorld {
constructor() {
run().catch(err => {
// handle rejection here
});
}
}

您在 await 和同一函数内使用 try/catch。一个 run() 已返回,此时您只是在处理一个 promise ,因此您可以使用 .catch() 而不是 捕获那里的拒绝尝试/捕捉


重要的是要记住 await 只是函数内 .then() 的语法糖。它不应用超出该功能的任何魔法。一旦 run() 返回,它只是返回一个常规的 promise ,所以如果你想从返回的 promise 中捕获拒绝,你必须在它上面使用 .catch()或者再次 await 然后用 try/catch 包围它。用 try/catch 包围一个未等待的 promise 不会捕获你正在做的被拒绝的 promise 。

关于javascript - 未处理的 promise 拒绝警告 : Unhandled promise rejection (rejection id: 1) in Node. JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47547629/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com