I’m working on a Node.js project and express is not found when I use it in server.js.
This is what I see when I run pm2 logs. In pm2 the only active process is server.js
/home/ec2-user/.pm2/logs/server-error.log last 15 lines:
0|server | Require stack:
0|server | - /home/ec2-user/Large-eCommerce-website-in-progress-/server.js
0|server | at Module._resolveFilename (node:internal/modules/cjs/loader:1140:15)
0|server | at Hook._require.Module.require (/usr/lib/nodejs18/lib/node_modules/pm2/node_modules/require-in-the-middle/index.js:81:25)
0|server | at require (node:internal/modules/helpers:177:18)
0|server | at Object.<anonymous> (/home/ec2-user/Large-eCommerce-website-in-progress-/server.js:1:17)
0|server | at Module._compile (node:internal/modules/cjs/loader:1364:14)
0|server | at Module._extensions..js (node:internal/modules/cjs/loader:1422:10)
0|server | at Module.load (node:internal/modules/cjs/loader:1203:32)
0|server | at Module._load (node:internal/modules/cjs/loader:1019:12)
0|server | at Object.<anonymous> (/usr/lib/nodejs18/lib/node_modules/pm2/lib/ProcessContainerFork.js:33:23)
0|server | at Module._compile (node:internal/modules/cjs/loader:1364:14) {
0|server | code: 'MODULE_NOT_FOUND',
0|server | requireStack: [ '/home/ec2-user/Large-eCommerce-website-in-progress-/server.js' ]
0|server | }
This is what I get when I run node server.js:
node:internal/modules/cjs/loader:1143
throw err;
^
Error: Cannot find module 'express'
Require stack:
- /home/ec2-user/Large-eCommerce-website-in-progress-/server.js
at Module._resolveFilename (node:internal/modules/cjs/loader:1140:15)
at Module._load (node:internal/modules/cjs/loader:981:27)
at Module.require (node:internal/modules/cjs/loader:1231:19)
at require (node:internal/modules/helpers:177:18)
at Object.<anonymous> (/home/ec2-user/Large-eCommerce-website-in-progress-/server.js:1:17)
at Module._compile (node:internal/modules/cjs/loader:1364:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1422:10)
at Module.load (node:internal/modules/cjs/loader:1203:32)
at Module._load (node:internal/modules/cjs/loader:1019:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:128:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '/home/ec2-user/Large-eCommerce-website-in-progress-/server.js' ]
}
This is the content of the json package:
{
"name": "devsite",
"version": "1.0.0",
"main": "server.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"start": "node server.js",
"build": "echo 'No build step required for backend'"
},
"author": "bogdan",
"license": "ISC",
"description": "",
"dependencies": {
"@aws-sdk/client-s3": "^3.772.0",
"aws-amplify": "^6.13.6",
"aws-sdk": "^2.1692.0",
"bcryptjs": "^2.4.3",
"body-parser": "^1.20.3",
"chokidar": "^4.0.3",
"cookie-parser": "^1.4.7",
"cors": "^2.8.5",
"crypto": "^1.0.1",
"dotenv": "^16.4.7",
"express": "^5.1.0",
"express-session": "^1.18.1",
"jsonwebtoken": "^9.0.2",
"mime": "^4.0.7",
"multer": "^1.4.5-lts.1",
"multer-s3": "^3.0.1",
"passport": "^0.7.0",
"passport-apple": "^2.0.2",
"passport-facebook": "^3.0.0",
"passport-google-oauth20": "^2.0.0",
"pg": "^8.13.1",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"sharp": "^0.34.1",
"stripe": "^17.6.0",
"uuid": "^11.0.5"
},
"devDependencies": {
"@aws-amplify/backend": "^1.14.3",
"@aws-amplify/backend-cli": "^1.5.0",
"aws-cdk": "^2.1003.0",
"aws-cdk-lib": "^2.180.0",
"constructs": "^10.4.2",
"esbuild": "^0.25.1",
"tsx": "^4.19.3",
"typescript": "^5.8.2"
}
}
This line of code causes the error:
const express = require('express');
This happens regardless of whether I use import or require.
The required modules, including express, are listed in my package.json under dependencies, and I’ve run npm install several times to ensure they are installed. Additionally, when I used import, the type field in package.json was set to module.
Despite these efforts, the error persists. I’ve also tried clearing the npm cache and restarting the server, but it hasn’t resolved the issue.
Steps taken:
-Switched from import to require.
-Verified that express is listed in package.json under dependencies.
-Installed dependencies using npm install.
-Restarted the app and cleared npm cache.
-I also used
ls node_modules/express
and it shows:
LICENSE lib node_modules.
-I also used:
rm -rf node_modules package-lock.json
npm install
All this for nothing
Environment:
-Node.js version: v18.20.6
-PM2 version: 6.0.5
-Express version: 5.1.0
-NPM version: 10.8.2
I’ve been struggling with this problem for a few days and I still haven’t found a solution. I’d deeply appreciate any help. I’ve posted this question before but unfortunately I haven’t found a solution yet. Thanks!