【问题标题】:Create register: TypeError: Right-hand side of 'instanceof' is not callable Express and Promisify创建寄存器:TypeError:'instanceof' 的右侧不可调用 Express 和 Promisify
【发布时间】:2020-04-05 08:36:28
【问题描述】:

以下代码显示了错误:

TypeError: 'instanceof' 的右侧不可调用

es6-promisify 库似乎有问题

 const {promisify} = require("es6-promisify");

 exports.register = async (req, res, next) => {
    const user = new User({ email: req.body.email, name: req.body.name });
    const register = promisify(User.register, User);
    await register(user, req.body.password);
    res.send("all has been saved")
    next(); // pass to authController.login
  };

【问题讨论】:

  • StackOverflow 不是提交错误的地方,您应该在该项目的 Github Issues area 中提交错误。

标签: node.js express node-promisify


【解决方案1】:

问题可能与 es6-promisify 库错误有关。我建议将 es6-promisify 更改为内置节点模块 util

一个新的工作解决方案应该是

const { promisify } = require('util');

exports.register = async (req, res, next) => {
  const user = new User({ email: req.body.email, name: req.body.name });
  const register = promisify(User.register).bind(User);
  await register(user, req.body.password);
  next();
}

注意,只是在User.register方法前面应用await肯定是不行的,因为这个方法仍然是一个正常的回调函数,你可以看到passport-local-mongoose test case

【讨论】:

    猜你喜欢
    • 2019-09-17
    • 2017-09-16
    • 2017-01-18
    • 2018-01-11
    • 2017-08-28
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    • 2020-10-31
    相关资源
    最近更新 更多