当前位置: 首页 > 知识库问答 >
问题:

UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“length”

卫景明
2023-03-14

(节点:55028)UnhandledPromiserEjectionWarning:TypeError:无法读取位于/users/PatrickStanciu/WebStormProjects/AUTISMAssistant/Backend/API/Controllers/PaymentsController.js:1045:34
位于processTicksAndRejections(internal/Process/Task_Queues.js:94:5)(节点:55028)的UnhandledPromiserEjectionWarning:未处理的承诺拒绝。
此错误源于抛入没有catch块的异步函数内部,或拒绝未用.(拒绝ID:1)
(节点:55028)[DEP0018]拒绝警告:拒绝未经处理的承诺。将来,未处理的承诺拒绝将以非零退出代码终止node.js进程。

当我尝试使用一个用户登录时,在我的Node.js后端出现了这个错误。为什么会出现?下面是一行:

   if (!profilePromise.rows.length) {
            resolve({
                success: true,
                cardDetails: null,
                planId: null
            })
            return;
        }

我对上面的“长度”有问题

共有1个答案

韩靖琪
2023-03-14

根据名称,profilepromise是一个承诺。承诺没有rows属性,因此profilepromise.rowsundefined并且您不能从undefined中读取任何属性。

您需要使用Promission并使用它的实现值,我猜它是带有lengty属性的东西:

profilePromise
.then(rows => {
    if (rows.length) {
        resolve(/*...*/);
    }
})
.catch(error => {
    // ...handle/report the error...
    // Probably `reject` here?
});

更多关于在这里使用承诺。

附带说明:假设profilepromise确实是一个promission是正确的,那么这就意味着这个代码正在成为显式promission创建反模式的牺牲品。与其创建自己的承诺然后调用resolvereject,不如链接到现有的承诺:

return profilePromise
    .then(rows => {
        if (rows.length) {
            return {
                success: true,
                cardDetails: null,
                planId: null
            };
        }
        // Either return something else here, or `throw` if `rows` not having
        // a truthy `length` is an error
    });
 类似资料:
  • 我正在尝试使用node express和Mongoose创建用户登录和注册...创建了用户模型....现在尝试在我的路由器auth.js中添加一个post方法,但由于某种原因,我一直得到错误不能读取属性'name'的未定义昨天我写了完全相同的代码,但使用了一些其他post方法,结果非常好.... 我只想让邮递员的工作现在就这样...多谢 auth.js文件 user.js文件 在此输入图像说明

  • 我是板条箱获取api从那里找到学生的分数主题手动获取和比较分数 我有两个集合和都与引用id连接 这是我的app.js 这是我的模型: 这是我的控制器: 我尝试了很多方法,但我的不能正常工作,这将产生错误。

  • 机器人随机崩溃并发出此错误。我已经将它编程为每当有问题时自动重新启动,并记录错误,因为它的技术上意味着不关机。 用于自动重新启动的代码如下: 我似乎也被“未经处理的承诺拒绝”...

  • 为什么我得到这个错误不能读取未定义的触摸属性? 为什么它不能读取,但它可以读取 当我们使用

  • 问题内容: 我正在制作非常简单的react应用。但是,当我尝试通过onChange事件调用父(实际上是祖父母)组件的方法时,我一直在获取。 这是触发事件的组件/表单(因此,在绑定的父组件上调用方法…是的,因为我通过道具将其从父组件传递下来,所以在方法上使用了.bound(this)。) 这是我如何通过大多数父(祖父母)组件中的props传递该方法的方法。 这是我作为父项(方法所有者和方法调用程序之

  • 我正在测试发送电子邮件与流星js和nodemailer插件: 流星添加捷运:流星NodeEmailer 当页面加载时,我在导航器的控制台上看到错误:无法读取未定义的属性“创建运输”。 那么问题是什么呢? 代码如下: /////////////////////////////////////////// ///////////////