해결된 질문
작성
·
40
0
아래와 같은 오류가 발생됩니다....
Error: Cannot find module 'bcrypt'
Require stack:
- /Users/sungwon/Desktop/Project/Web/company_website/backend/routes/user.js
- /Users/sungwon/Desktop/Project/Web/company_website/backend/index.js
at Module._resolveFilename (node:internal/modules/cjs/loader:1369:15)
at defaultResolveImpl (node:internal/modules/cjs/loader:1025:19)
at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1030:22)
at Module._load (node:internal/modules/cjs/loader:1179:37)
at TracingChannel.traceSync (node:diagnostics_channel:322:14)
at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)
at Module.require (node:internal/modules/cjs/loader:1449:12)
at require (node:internal/modules/helpers:135:16)
at Object.<anonymous> (/Users/sungwon/Desktop/Project/Web/company_website/backend/routes/user.js:3:16)
at Module._compile (node:internal/modules/cjs/loader:1692:14) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/Users/sungwon/Desktop/Project/Web/company_website/backend/routes/user.js',
'/Users/sungwon/Desktop/Project/Web/company_website/backend/index.js'
]
}
Node.js v24.4.0
[nodemon] app crashed - waiting for file changes before starting...
아래는 index.js 코드입니다.
require('dotenv').config();
const express = require('express');
const mongoose = require('mongoose');
const app = express();
const PORT =3000;
const userRoutes = require("./routes/user");
app.use('/api/auth',userRoutes);
app.get('/', (req, res) => {
res.send('Hello World!');
});
mongoose.connect(process.env.MONGO_URI)
.then(() => console.log('MongoDB와 연결이 되었습니다.'))
.catch((error)=> console.log('MongoDB와 연결이 실패하였습니다:',error));
app.listen(PORT, () => {
console.log("Server is running");
})
models>User.js 코드입니다.
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema(
{
username:{
type:String,
require: true,
trim: true,
minlength:2,
maxlength:30,
},
password:{
type:String,
require:true,
select: false,
},
isLoggedIn:{
type:Boolean,
default:false,
},
isActive:{
type:Boolean,
default:false,
},
failedLoginAttempts:{
type:Number,
default:0,
},
lastLoginAttempts:{
type:Date,
},
ipAddress:{
type:String,
trim:true,
},
createdAt:{
type:Date,
default: Date.now,
}
},
{
timestamps:true,
}
);
const User = mongoose.model('User', userSchema);
module.exports = User;
routes>user.js코드 입니다.
const express = require('express');
const router = express.Router();
const bcrypt = require('bcrypt');
const User = require('../models/User');
router.post('/signup', async (req, res) => {
try {
const {username, password} = req.body;
const existingUser=await User.findOne({username});
if(existingUser){
return res.status(400).json({message:'이미 존재하는 사용자 입니다.'});
}
const hashedPassword = await bcrypt.hash(password,10);
const user = new User({
username,
password:hashedPassword,
})
await user.save();
res.status(201).json({message:'회원가입이 완료되었습니다.'});
} catch(error){
res.status(500).json({message:'서버 오류가 발생되었습니다.'});
console.log(error);
}
});
module.exports = router;
답변 2
0
안녕하세요. 질문 주셔서 감사합니다!
챕터 4-4에서는 관리자 계정을 생성하는 과정에서 비밀번호를 bcrypt 패키지를 이용해 암호화했습니다. 저희가 직접 암호화 로직을 구현하기보다는, 이미 다른 개발자가 개발하여 패키지 형태로 제공하는 bcrypt를 활용했습니다.
### routes/user.js signup 함수 중 일부
const hashedPassword = await bcrypt.hash(password, 10);
현재 질문자님께 발생한 오류는 bcrypt 패키지가 설치되어 있지 않거나, 설치되어 있어도 Node.js에서 해당 패키지를 인식하지 못할 때 발생하는 문제입니다.
# backend 폴더로 이동해서 설치를 진행해야 합니다.
cd backend
# bcrypt 패키지 삭제 명령어
npm uninstall bcrypt
# bcrypt 패키지 설치 명령어
npm install bcrypt
# backend/package.json 코드 중 일부
"dependencies": {
"axios": "^1.7.9",
"bcrypt": "^5.1.1", <- 설치가 정상적으로 완료가 되었다면 package.json dependencies에 명시가 됩니다.
"body-parser": "^1.20.3",
"cookie-parser": "^1.4.7",
"dotenv": "^16.4.7",
"express": "^4.21.2",
"jsonwebtoken": "^9.0.2",
"mongoose": "^8.9.2",
"nodemon": "^3.1.9"
}
이 방법으로도 문제가 해결되지 않는다면, 현재 사용 중인 Node.js 버전, 운영체제 환경, 그리고 발생하는 오류 메시지 전체를 함께 알려주세요. 확인 후 보다 구체적인 해결 방법을 안내해 드리겠습니다. 감사합니다!
0
안녕하세요 bcrypt라는 모듈이 없어서 발생한 거 같아요!
혹시 모듈 설치를 하셨는지 궁금합니다!
아래 명령어를 통해 설치하시면 될 거 같습니다
npm install bcrypt
# or
yarn add bcrypt