skip to Main Content

I created Next Js project. I deployed it to my CPanel. And I created server.js file on directory.
I called next module as require in server.js. But When I access to my website I catch an error.

internal/modules/cjs/loader.js:638
throw err;
^

Error: Cannot find module ‘next’;

This error message.

My server.js code

const { createServer } = require("http");
const { parse } = require("url");
const next = require("next");
const dev = process.env.NODE_ENV !== "production";

const port = !dev ? process.env.PORT : 3000;

// Create the Express-Next App
const app = next({ dev });
const handle = app.getRequestHandler();

app
  .prepare()
  .then(() => {
    createServer((req, res) => {
      const parsedUrl = parse(req.url, true);
      const { pathname, query } = parsedUrl;
      handle(req, res, parsedUrl);
      console.log("pathname", pathname);
    }).listen(port, (err) => {
      if (err) throw err;
      console.log(`> Ready on http://localhost:${port}`);
    });
  })
  .catch((ex) => {
    console.error(ex.stack);
    process.exit(1);
  });

My package json

{
  "name": "projectName",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "node server.js",
    "build": "next build",
    "start": "NODE_ENV=production node server.js"
  },
  "dependencies": {
    "express": "^4.17.1",
    "next": "10.0.6",
    "react": "17.0.1",
    "react-dom": "17.0.1"
  }
}

What should i do?

Thank you.
Best regards

2

Answers


  1. I’ve already had problems publishing a next application other than on vercel. To fix the error I had to create a docker in order to publish the application. In case someone doesn’t answer with a more viable solution, I recommend looking into using a docker.

    Login or Signup to reply.
  2. Add this in your package.json dependency section : "@next/env": "^12.0.7"

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search