![](/img/trans.png)
[英]TypeError: require(...).registerUser is not a function
[英]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.js
和const db = require('./database');
進入哈希器。
這種循環依賴關系可能會導致問題。
您的出口很好。
從我可以看到, registerUser
是一個獨立的函數,而不是db
對象的方法。
我還可以看到module.exports = { registerUser : registerUser };
指令-但這並不能提示要導出到的位置或目標。
我建議您嘗試registerUser(data);
作為一個獨立的聲明並查看會發生什么,因為顯然它並沒有成為db
的方法-在加載期間監視控制台中是否有任何錯誤消息...
祝好運
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.