I am working on a full-stack project using Express.js for the backend and MongoDB for the database. I am encountering an error when trying to start my server. The error message is as follows:
Error: Cannot find module '../controllers/userController'
Require stack:
- D:comundev_projecteHubserversrcroutesuserRoutes.js
- D:comundev_projecteHubserversrcapp.js
at Module._resolveFilename (node:internal/modules/cjs/loader:1144:15)
at Module._load (node:internal/modules/cjs/loader:985:27)
at Module.require (node:internal/modules/cjs/loader:1235:19)
at require (node:internal/modules/helpers:176:18)
at Object.<anonymous> (D:comundev_projecteHubserversrcroutesuserRoutes.js:3:24)
at Module._compile (node:internal/modules/cjs/loader:1376:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
at Module.load (node:internal/modules/cjs/loader:1207:32)
at Module._load (node:internal/modules/cjs/loader:1023:12)
at Module.require (node:internal/modules/cjs/loader:1235:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'D:\comun\dev_project\eHub\server\src\routes\userRoutes.js',
'D:\comun\dev_project\eHub\server\src\app.js'
]
}
Here is my project structure:
server/
├── src/
│ ├── app.js
│ ├── controllers/
│ │ └── userController.js
│ ├── models/
│ │ └── User.js
│ ├── routes/
│ │ └── userRoutes.js
│ ├── services/
│ └── .env
├── package.json
src/app.js
:
const express = require('express');
const mongoose = require('mongoose');
const dotenv = require('dotenv');
// Load environment variables from .env file
dotenv.config();
// Connect to MongoDB
mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
}).then(() => console.log('MongoDB connected'))
.catch((err) => console.error(err));
const app = express();
// Middleware
app.use(express.json());
// Routes
app.use('/api/users', require('./routes/userRoutes'));
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
src/routes/userRoutes.js
:
const express = require('express');
const router = express.Router();
const userController = require('../controllers/userController');
router.post('/', userController.createUser);
router.get('/', userController.getUsers);
module.exports = router;
src/controllers/userController.js
:
const User = require('../models/User');
exports.createUser = async (req, res) => {
const { name, email, password } = req.body;
try {
const newUser = new User({ name, email, password });
await newUser.save();
res.status(201).json(newUser);
} catch (error) {
res.status(400).json({ error: error.message });
}
};
exports.getUsers = async (req, res) => {
try {
const users = await User.find();
res.json(users);
} catch (error) {[enter image description here](https://i.sstatic.net/z116ogK5.png)
res.status(500).json({ error: error.message });
}
};
src/models/User.js
:
const mongoose = require('mongoose');
const UserSchema = new mongoose.Schema({
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
password: { type: String, required: true },
});
module.exports = mongoose.model('User', UserSchema);
I have double-checked the file paths and names to ensure there are no typos. Despite this, I still receive the “Cannot find module” error.
Any help resolving this issue would be greatly appreciated. Thanks!:)
screenshort
I have double-checked the file paths and names to ensure there are no typos. Despite this, I still receive the “Cannot find module” error.
furb is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.