簡體   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