繁体   English   中英

如何修复TypeError:registerUser不是函数

[英]How to fix TypeError: registerUser is not a function

我试图注册用户并将其添加到数据库中,但是当我调用registerUser函数时,会引发错误。

我通读了这篇文章,以了解将如何导致此错误,并且在这里搜索了几篇文章。

我觉得我需要另一只眼睛来帮助发现我在做错什么

这是调用注册用户功能的代码(“数据”是一个对象,是从注册表单中清除的输入)

const db  = require('./database');
const bcrypt = require('bcrypt');
const saltRounds = 10;


function hasher(data){

   bcrypt.hash(data.password, saltRounds)
      .then(function(hash) {
         data.password = hash;
         db.registerUser(data);  
      })
      .catch(e => console.error(e));
}

如果在调用registerUser之前我console.log(db),则在日志中打印“ {}”

这是来自database.js的注册用户功能:

const { Client } = require('pg');
const hasher = require('../models/hash')

const client = new Client({
  connectionString: process.env.DATABASE_URL,
  ssl: true,
});

client.connect()


function registerUser(data) {

   const query = "INSERT INTO users (user_id, first_name, last_name, email, username, hash_pass) VALUES(DEFAULT, $1, $2, $3, $4, $5)";
   const values = [data.first, data.last, data.email, data.username, data.password];
   client.query(query, values)
      .then(res => console.log("stored: " + res.rows[0] + "in db"))
      .catch(e => console.error(e.stack));
}


module.exports = {
   registerUser : registerUser
};

我收到“ TypeError:db.registerUser不是函数”

我猜的问题是,您正在将const hasher = require('../models/hash')导入database.jsconst db = require('./database'); 进入哈希器。

这种循环依赖关系可能会导致问题。

您的出口很好。

从我可以看到, registerUser是一个独立的函数,而不是db对象的方法。

我还可以看到module.exports = { registerUser : registerUser }; 指令-但这并不能提示要导出到的位置或目标。

我建议您尝试registerUser(data); 作为一个独立的声明并查看会发生什么,因为显然它并没有成为db的方法-在加载期间监视控制台中是否有任何错误消息...

祝好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM