提问者:小点点

UnhandledPromiserEjectionWarning:ReferenceError:未定义verifyItemInStock


我正在尝试创建一个辅助方法,以便在同一个控制器中使用:

module.exports = {

  async update(req, res) {

    // code here...

    // method call
    this.verifyItemInStock()

    // more code here ...

  },

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

}

但我得到了以下错误:

(节点:31904)UnhandledPromiserEjectionWarning:ReferenceError:update中未定义verifyItemInStock(/home/netogerbi/workspaces/zombieresistance/zombieresistance/app/controllers/Trade.controller.js:34:5)(节点:31904)UnhandledPromiserEjectionWarning:UnhandledPromiserEjectionWarning:UnhandledPromiserEjectionWarning:UnhandledPromiserEjectionWarning。 此错误可能是由于不带catch块的异步函数内部引发的,或者是由于拒绝了未用。catch()处理的承诺。 (拒绝ID:1)(Node:31904)[DEP0018]拒绝警告:未处理的承诺拒绝被拒绝。 将来,没有处理的承诺拒绝将使用非零退出代码终止Node.js进程。


共2个答案

匿名用户

删除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
}

匿名用户

我决定如下:

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

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

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

}

非常感谢。。。