UnhandledPromiseRejectionWarning:ReferenceError:未定义verifyItemInStock

时间:2019-10-13 15:31:26

标签: javascript node.js express

我正在尝试创建在同一控制器内使用的辅助方法:

module.exports = {

  async update(req, res) {

    // code here...

    // method call
    this.verifyItemInStock()

    // more code here ...

  },

  // method declaration
  verifyItemInStock (itemId) {
      // more code...
  }

}

但出现以下错误:

  

(节点:31904)UnhandledPromiseRejectionWarning:ReferenceError:   verifyItemInStock未定义       更新时(/home/netogerbi/workspaces/zombieresistance/zombieresistance/app/controllers/trade.controller.js:34:5)   (节点:31904)UnhandledPromiseRejectionWarning:未处理的Promise   拒绝。该错误是由抛出异步内部引起的   没有捕获块或拒绝承诺   未使用.catch()处理。 (拒绝ID:1)(节点:31904)[DEP0018]   DeprecationWarning:已弃用未处理的承诺拒绝。在   未来,未处理的承诺拒绝将终止   具有非零退出代码的Node.js进程。

2 个答案:

答案 0 :(得分:0)

删除this,使其更具可读性:

// method declaration
const verifyItemInStock = itemId => {
  // more code...
}

const update = async (req, res) => {
  // code here...
  // method call
  verifyItemInStock()
  // more code here ...
}


module.exports = {
  update,
  verifyItemInStock,
}

此外,诺言的使用者也应注意:

import { update } from './my-module';

update(req, res).then(...).catch(...)
// or
try {
  const resolved = await update(req, res);
  // consume the resolved value
} catch (e) {
  // exception handling
}

答案 1 :(得分:0)

我通过以下决定解决了问题:

const update = async (req, res) => {

  // auxiliar method declaration
  verifyItemInStock = itemId => {
      // code...
  }

  // ...
  // method call
  const hasItems = verifyItemInStock(id)

}

非常感谢您...