0

I am new learning server side of MERN stack and I can't find any answer of this problem can anyone help me to this error? I already did try all possible solution but it still won't work HELP!

node:internal/errors:491
    ErrorCaptureStackTrace(err);
    ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:\Users\charl\Desktop\movie-reviews\server.js' imported from C:\Users\charl\Desktop\movie-reviews\backend\index.js
at new NodeError (node:internal/errors:400:5)
at finalizeResolution (node:internal/modules/esm/resolve:326:11)
at moduleResolve (node:internal/modules/esm/resolve:945:10)
at defaultResolve (node:internal/modules/esm/resolve:1153:11)
at nextResolve (node:internal/modules/esm/loader:163:28)
at ESMLoader.resolve (node:internal/modules/esm/loader:842:30)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40)
at link (node:internal/modules/esm/module_job:76:36) {
code: 'ERR_MODULE_NOT_FOUND'

}

index.js

import app from '../server.js'
import mongodb from "mongodb"
import dotenv from "dotenv"

async function main(){

    dotenv.config()
    const client = new mongodb.MongoClient(process.env.MOVIEREVIEWS_DB_URI)

    const port = process.env.PORT || 8000

    try{
        //connect to the mongodb cluster

        await client.connect()
        app.listen(port,()=>{
            console.log("server is running on port: " + port);
        })
    } catch (e){
        console.error(e);
        process.exit(1)
    }
}

main().catch(console.error);

server.js

import express from 'express'
import cors from 'cors'
import movies from './api/movies.rout.js'
const app = express()

app.use(cors())
app.use(express.json())
app.use("/api/v1/movies",movies)
app.use('*', (req,res)=>{
    res.status(404).json({error:"not found"})
})

export default app

movies.route.js

import express from 'express'

const router = express.Router() //get access to express router
router.route('/').get((req,res) => res.send('hello world'))

export default router

connection.env

MOVIEREVIEWS_DB_URI=database
MOVIEREVIEWS=sample_mflix
PORT=500

I tried to adding this in package.json

"start": "nodemon --experimental-modules --es-module-specifier-resolution=node index.js"

1 Answers1

0

index.js

import express from "express"
import dotenv from "dotenv"
import cors from "cors"

// use mongoose package instead of mongodb
import mongoose from "mongoose"

// routes
// should name files in camel case like movieRoutes.js and also use file extension .js
import movies from "./api/moviesRoutes.js"

// configurations
dotenv.config();

const app = express();

app.use(cors());
app.use(express.json());
// middleware for x-www-form-urlencoded
app.use(express.urlencoded({ extended: true}));

// use movie route
app.use("/api/v1/movies", movies);


// MongoDB Connection
const port = process.env.PORT || 8000
mongoose.set("strictQuery", true);
mongoose.connect(process.env.MOVIEREVIEWS_DB_URI).then(() => {
    app.listen(port ,()=> console.log(`server is running on port: ${port}`));
}).
catch((err) => console.log(err));

moviesRoute.js

import express from "express"

const router = express.Router();

router.route("/").get((req, res) => {
    res.send("Hello World");
});

export default router;

You don't need both index.js and server.js files, You can use index.js for basic configurations. Hope this code helps you.

Ali
  • 11
  • 1