Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ERR_MODULE_NOT_FOUND for project-level module #3163

Closed
thany opened this issue Jan 5, 2021 · 23 comments
Closed

ERR_MODULE_NOT_FOUND for project-level module #3163

thany opened this issue Jan 5, 2021 · 23 comments

Comments

@thany
Copy link

thany commented Jan 5, 2021

  • Node.js Version: 14.15
  • OS: Windows 10 20H2
  • Scope (install, code, runtime, meta, other?): code/runtime?
  • Module (and version) (if relevant): N/A

This is my project structure:

* project
    * modules
        * place-details.js
        * map-codes.js
    * index.js
    * package.json
    * package-lock.json

Then, in index.js is this:

import placeDetails from './modules/place-details';
import mapCodes from './modules/map-codes';

The rest of the code is not relevant. Importing modules from node_modules like (using import ... from) this works a charm. VS Code can navigate through these modules perfectly fine. Infact, this is how VS Code automatically added the imports.

When I run the code:

D:\Projecten\maps-importer>node index.js
internal/process/esm_loader.js:74
    internalBinding('errors').triggerUncaughtException(
                              ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'D:\Projecten\maps-importer\modules\place-details' imported from D:\Projecten\maps-importer\index.js
Did you mean to import ../modules/place-details.js?
←[90m    at finalizeResolution (internal/modules/esm/resolve.js:276:11)←[39m
←[90m    at moduleResolve (internal/modules/esm/resolve.js:699:10)←[39m
←[90m    at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:810:11)←[39m
←[90m    at Loader.resolve (internal/modules/esm/loader.js:86:40)←[39m
←[90m    at Loader.getModuleJob (internal/modules/esm/loader.js:230:28)←[39m
←[90m    at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:56:40)←[39m
←[90m    at link (internal/modules/esm/module_job.js:55:36)←[39m {
  code: ←[32m'ERR_MODULE_NOT_FOUND'←[39m
}

The suggestion obviously doesn't work, as it suggests the file is one level up. It is not.
I've also tried ./modules/place-details.js (adding extension) and modules/place-details (removing the dot-slash) and a combination. None of those work (or I wouldn't have opened this issue 😀).

I'm also confused why Node.js doesn't say where it couldn't find said module, in other words, where it's been looking for it. Because it's right there. So I really don't know how else to tell Node.js where to go and grab this module. I've never had an error so confusing.

What am I missing here? I'm sure this is not a bug, seeing how mature Node.js already is.

@RaisinTen
Copy link
Contributor

RaisinTen commented Jan 6, 2021

I think file extensions are needed here: https://nodejs.org/api/esm.html#esm_mandatory_file_extensions
and you need to export something named 'default' if you want to import like that.

Here is the log of something that works for me:

tree .
.
├── index.js
├── modules
│   ├── map-codes.js
│   └── place-details.js
├── package.json
└── package-lock.json

1 directory, 5 filescat package.json
{
  "name": "project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "type": "module",
  "keywords": [],
  "author": "",
  "license": "ISC"
}cat package-lock.json
{
  "name": "project",
  "version": "1.0.0",
  "lockfileVersion": 2,
  "requires": true,
  "packages": {
    "": {
      "version": "1.0.0",
      "license": "ISC"
    }
  }
}cat index.js
import placeDetails from './modules/place-details.js';
import mapCodes from './modules/map-codes.js';

console.log(placeDetails);
console.log(mapCodes);cat modules/map-codes.js
export default 'map-codes';cat modules/place-details.js
export default 'place-details';node index.js
place-details
map-codes

Does this work for you?

@thany
Copy link
Author

thany commented Jan 6, 2021

Interesting. I'll look into it tonight. I don't quite understand why I'm also getting errors when adding file existensions. Must be another problem then maybe.

Also, and this is not a Node.js question I realize, but do you happen to know why VS Code would automatically not add file extensions when letting it automatically add import directives, even if they are required?

@RaisinTen
Copy link
Contributor

I'm sorry, I don't know that about VS Code. :/

@k3nnet
Copy link

k3nnet commented May 27, 2021

add js extentions on the imports line resolved the isseu for me . thanks !

@OmgImAlexis
Copy link

I think I'm also hitting this same issue though it's a little weirder in the error.

node:internal/process/esm_loader:74
    internalBinding('errors').triggerUncaughtException(
                              ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/usr/local/bin/unraid-api/dist/cli.js' imported from /root/
Did you mean to import /usr/local/bin/unraid-api/dist/cli.js?
    at new NodeError (node:internal/errors:371:5)
    at finalizeResolution (node:internal/modules/esm/resolve:321:11)
    at moduleResolve (node:internal/modules/esm/resolve:756:10)
    at Loader.defaultResolve [as _resolve] (node:internal/modules/esm/resolve:867:11)
    at Loader.resolve (node:internal/modules/esm/loader:89:40)
    at Loader.getModuleJob (node:internal/modules/esm/loader:242:28)
    at Loader.import (node:internal/modules/esm/loader:177:28)
    at node:internal/modules/run_main:49:28
    at Object.loadESM (node:internal/process/esm_loader:68:11)
    at async handleMainPromise (node:internal/modules/run_main:63:12) {
  code: 'ERR_MODULE_NOT_FOUND'
}

@naseemahmd
Copy link

install nodemon and in you package.json under script add this nodemon --experimental-modules --es-module-specifier-resolution=node .

@J-NAVEEN-KUMAR
Copy link

Adding the .js extension on the import lines resolves the issue. It is a weird error but I think we have to provide an extension so that nodejs can understand.
Thanks

@OmgImAlexis
Copy link

@J-NAVEEN-KUMAR it shouldn't be needed as node checks a bunch of paths for the import including with the .js added.

@zurdozarazaga
Copy link

Agregar la extensión .js en las líneas de importación resuelve el problema. Es un error extraño, pero creo que tenemos que proporcionar una extensión para que nodejs pueda entenderlo. Gracias

I don't understand why it will be but it worked for me

@Saumya15082001
Copy link

Saumya15082001 commented Apr 6, 2022

HEY! I'VE BEEN GETTING THIS ERROR FOR ABOUT A WEEK NOW AND I DON'T UNDERSTAND HOW TO SOLVE THIS.
IF ANYONE HAS ANY IDEAS PLEASE LET ME KNOW!!

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

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/D:/SemProject/prepbv/Backend/model/Schemas/Application' imported from D:\SemProject\prepbv\Backend\model\\ApplicationCrudModel.js
    at new NodeError (node:internal/errors:371:5)
    at finalizeResolution (node:internal/modules/esm/resolve:407:11)
    at moduleResolve (node:internal/modules/esm/resolve:981:10)
    at defaultResolve (node:internal/modules/esm/resolve:1078:11)
    at ESMLoader.resolve (node:internal/modules/esm/loader:530:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:251:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:79:40)
    at link (node:internal/modules/esm/module_job:78:36) {
  code: 'ERR_MODULE_NOT_FOUND'

@bepro9
Copy link

bepro9 commented Jul 12, 2022

add the .js after every import , you will get your errror resolved

@RaisinTen
Copy link
Contributor

Judging by the feedback, #3163 (comment) seems to be the right solution. I'm closing this as resolved for now but feel free to let me know if this still needs to stay open.

@musakazim989
Copy link

musakazim989 commented Jul 15, 2022

If you used "type": "module", on package.json and then you should use import. while you are using import it required default so in router or related required file you must use like "export default serverRouter"
Or can follow the below syntax:

import express from "express"
const serverRouter = express.Router()

serverRouter.get("/", (req, res) => {
res.send("hello I'm runnig 4000")
})

export default serverRouter

@pavlovvv
Copy link

Add this to tsconfig.json

{
  "compilerOptions": {
  //...
  },
  "ts-node": {
    "esm": true,
    "experimentalSpecifierResolution": "node",
}
}

@chalaniS
Copy link

chalaniS commented Apr 5, 2023

Thanks to you all, I have fixed the error...

@almar7oom
Copy link

Hello, I have a problem with the package.json file, two days ago, and I have been suffering from the problem, and I did not find a solution to it. Can someone help and support you?

==> Build uploaded in 17s
Apr 21 03:05:46 AM ==> Build successful 🎉
Apr 21 03:05:46 AM ==> Deploying...
Apr 21 03:06:08 AM ==> Starting service with 'yarn start'
Apr 21 03:06:11 AM yarn run v1.22.5
Apr 21 03:06:12 AM error Couldn't find a package.json file in "/opt/render/project/src"
Apr 21 03:06:12 AM info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Apr 21 03:06:20 AM ==> Starting service with 'yarn start'
Apr 21 03:06:24 AM yarn run v1.22.5
Apr 21 03:06:25 AM error Couldn't find a package.json file in "/opt/render/project/src"
Apr 21 03:06:25 AM info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

@udaybagda
Copy link

Before :
import placeDetails from './modules/place-details';
import mapCodes from './modules/map-codes';

After :
import placeDetails from '../modules/place-details.js';
import mapCodes from '../modules/map-codes'.js;

Try this.
This is works 100%. 👍

@minhajzein
Copy link

Error: Cannot find module '/home/ubuntu/legnutz/node_modules/razorpay/index.js'. Please verify that the package.json has a valid "main" entry
at tryPackage (node:internal/modules/cjs/loader:438:19)
at Module._findPath (node:internal/modules/cjs/loader:680:18)
at Module._resolveFilename (node:internal/modules/cjs/loader:1063:27)
at Module._load (node:internal/modules/cjs/loader:922:27)
at Module.require (node:internal/modules/cjs/loader:1143:19)
at require (node:internal/modules/cjs/helpers:119:18)
at Object. (/home/ubuntu/legnutz/controllers/cart-cnt.js:6:18)
at Module._compile (node:internal/modules/cjs/loader:1256:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
at Module.load (node:internal/modules/cjs/loader:1119:32) {
code: 'MODULE_NOT_FOUND',
path: '/home/ubuntu/legnutz/node_modules/razorpay/package.json',
requestPath: 'razorpay'
}

@nirbhay2001
Copy link

HEY! I'VE BEEN GETTING THIS ERROR FOR ABOUT A WEEK NOW AND I DON'T UNDERSTAND HOW TO SOLVE THIS.
IF ANYONE HAS ANY IDEAS PLEASE LET ME KNOW!!

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

Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:\Users\Nirbhay Gupta\Desktop\Web\web_Development_Project\16_Social_Media_App\server\controllers\authController' imported from C:\Users\Nirbhay Gupta\Desktop\Web\web_Development_Project\16_Social_Media_App\server\routes\auth.js
at new NodeError (node:internal/errors:405:5)
at finalizeResolution (node:internal/modules/esm/resolve:327:11)
at moduleResolve (node:internal/modules/esm/resolve:946:10)
at defaultResolve (node:internal/modules/esm/resolve:1132:11)
at nextResolve (node:internal/modules/esm/loader:163:28)
at ESMLoader.resolve (node:internal/modules/esm/loader:835:30)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
at ModuleWrap. (node:internal/modules/esm/module_job:77:40)
at link (node:internal/modules/esm/module_job:76:36) {
code: 'ERR_MODULE_NOT_FOUND'
}

Node.js v18.18.0
[nodemon] app crashed - waiting for file changes before starting...

@minhajzein
Copy link

minhajzein commented Dec 13, 2023 via email

@nirbhay2001
Copy link

nirbhay2001 commented Dec 13, 2023 via email

@Barou93
Copy link

Barou93 commented Feb 19, 2024

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

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'app.js' imported from /Users/oumarmauret/Documents/AkalanSchool/models/index.js
at new NodeError (node:internal/errors:405:5)
at packageResolve (node:internal/modules/esm/resolve:890:9)
at moduleResolve (node:internal/modules/esm/resolve:939:20)
at defaultResolve (node:internal/modules/esm/resolve:1132:11)
at nextResolve (node:internal/modules/esm/loader:163:28)
at ESMLoader.resolve (node:internal/modules/esm/loader:835:30)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
at ESMLoader.import (node:internal/modules/esm/loader:524:22)
at importModuleDynamically (node:internal/modules/esm/translators:110:35)
at importModuleDynamicallyCallback (node:internal/process/esm_loader:36:14) {
code: 'ERR_MODULE_NOT_FOUND'
}

Node.js v18.18.2
I got the same error too, but mine is linked to my app.js file, whereas the app.js file looks like this :
Uploading Capture d’écran 2024-02-19 à 01.29.25.png…

import express from 'express';
import bodyParser from 'body-parser';
import rateLimit from 'express-rate-limit';
import helmet from 'helmet';
import morgan from 'morgan';
import cors from 'cors';
import cookieParser from 'cookie-parser';
import AppError from './utils/appError.js';
import globalErrorHandler from './controllers/errorController.js';
import path from 'path';
import { getCurrentUser } from './controllers/googleAuth.js';
import { getFacebookUserData } from './controllers/facebookAuth.js';
import session from 'express-session';
import xss from 'xss-clean';
import { Sequelize } from 'sequelize';
import config from './config/config.json' assert { type: 'json' };

const app = express();

// Import des routes
import adminRoutes from './routes/admin.routes.js';
import oauthRoutes from './routes/oauth.routes.js';
import categoriesRoutes from './routes/categories.routes.js'; // Ajout de cette ligne
import downloadRoutes from './routes/courseDownload.routes.js';
import coursesRoutes from './routes/course.routes.js';
import moduleRoutes from './routes/module.routes.js';
import LessonRoutes from './routes/lesson.routes.js';
import QuizRoutes from './routes/quiz.routes.js';
import QuestionRoutes from './routes/question.routes.js';
import AnswerRoutes from './routes/answer.route.js';
import userRoutes from './routes/user.routes.js';
import reviewRoutes from './routes/review.routes.js';
import statsRoutes from './routes/enrolment.routes.js';

app.enable('trust proxy');
app.set('views', path.join(import.meta.url, './views'));

// 1) GLOBAL MIDDLEWARES
// Set security HTTP headers
app.use(helmet());
app.use(
cors({
credentials: true,
})
);

app.use(express.static(path.join(import.meta.url, 'views')));
app.use(express.static(path.join(import.meta.url, 'public')));
app.get('/', (req, res) => {
res.render('signin.ejs');
});

// Limit requests from same API
const limiter = rateLimit({
max: 5,
windowMs: 60 * 60 * 1000,
//one hour
message:
'Trop de demandes provenant de cette IP, veuillez réessayer dans une heure !',
});

app.use('/api/', limiter);

// Body parser, reading data from body into req.body
app.use(express.json({ limit: '10kb' }));
app.use(express.urlencoded({ extended: true, limit: '10kb' }));
app.use(cookieParser());

app.use(
session({
secret: 'Keep it secret',
resave: false,
saveUninitialized: false,
cookie: { secure: false },
})
);

app.get('/myaccount', getCurrentUser, async (req, res) => {
try {
const fullname = res.locals.user.fullname;
const message = Hello ${fullname} (Connected via Google);
res.send(message);
} catch (error) {
console.error('Error fetching user data:', error.message);
res.status(500).send(error.message);
}
});

app.get('/myprofile', getFacebookUserData, async (req, res) => {
try {
const fullname = res.locals.user.fullname;
const message = Hello ${fullname} (Connected via Facebook);
res.send(message);
} catch (error) {
console.error('Error fetching user data:', error.message);
res.status(500).send(error.message);
}
});

//Data sanitization against SQL query injection

//Data sanitization against XSS
app.use(xss());

// Initialize Sequelize
const sequelize = new Sequelize(
config[process.env.NODE_ENV || 'development'].database,
config[process.env.NODE_ENV || 'development'].username,
config[process.env.NODE_ENV || 'development'].password,
config[process.env.NODE_ENV || 'development']
);

// Check database connection
async function sequelizeDatabaseConnect() {
try {
await sequelize.authenticate();
console.log('Connexion à la base de données réussie.');
} catch (error) {
console.error('Erreur de connexion à la base de données :', error);
}
}

sequelizeDatabaseConnect();

if (process.env.NODE_ENV === 'development') {
app.use(morgan('dev'));
}

app.use('/uploads', express.static(path.join(import.meta.url, 'uploads')));
app.use(cors());

app.use((req, res, next) => {
req.requestTime = new Date().toISOString();
next();
});

// Routes
app.use('/api/v1/courses', categoriesRoutes);
app.use('/api/v1/courses/downloads', downloadRoutes);
app.use('/api/v1/courses', coursesRoutes);
app.use('/api/v1/courses', LessonRoutes);
app.use('/api/v1/courses', moduleRoutes);
app.use('/api/v1/courses', QuizRoutes);
app.use('/api/v1/courses', QuestionRoutes);
app.use('/api/v1/courses', AnswerRoutes);
app.use('/api/v1/admins', adminRoutes);
app.use('/api/v1/auth', oauthRoutes);
app.use('/api/v1/users', userRoutes);
app.use('/api/v1/stats', statsRoutes);
app.use('/api/v1/reviews', reviewRoutes);

app.all('*', (req, res, next) => {
next(
new AppError(Impossible de trouver ${req.originalUrl} sur ce serveur, 404)
);
});

app.use(globalErrorHandler);

export default app;

@Shradhas123
Copy link

node:internal/modules/esm/resolve:265
[1] throw new ERR_MODULE_NOT_FOUND(
[1] ^
[1]
[1] Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'D:\Workplace\repository\research-portal\code\middleware\dist\app' imported from D:\Workplace\repository\research-portal\code\middleware\dist\index.js
[1] at finalizeResolution (node:internal/modules/esm/resolve:265:11)
[1] at moduleResolve (node:internal/modules/esm/resolve:933:10)
[1] at defaultResolve (node:internal/modules/esm/resolve:1157:11)
[1] at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:390:12)
[1] at ModuleLoader.resolve (node:internal/modules/esm/loader:359:25)
[1] at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:234:38)
[1] at ModuleWrap. (node:internal/modules/esm/module_job:87:39)
[1] at link (node:internal/modules/esm/module_job:86:36) {
[1] code: 'ERR_MODULE_NOT_FOUND',
[1] url: 'file:///D:/Workplace/repository/research-portal/code/middleware/dist/app'
[1] }
[1]
[1] Node.js v20.12.2
[1] [nodemon] app crashed - waiting for file changes before starting...
[1] [nodemon] restarting due to changes...
[1] [nodemon] starting node --experimental-modules --es-module-specifier-resolution=node dist/index.js
[1] node:internal/modules/esm/resolve:265
[1] throw new ERR_MODULE_NOT_FOUND(
[1] ^
[1]
[1] Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'D:\Workplace\repository\research-portal\code\middleware\dist\app' imported from D:\Workplace\repository\research-portal\code\middleware\dist\index.js
[1] at finalizeResolution (node:internal/modules/esm/resolve:265:11)
[1] at moduleResolve (node:internal/modules/esm/resolve:933:10)
[1] at defaultResolve (node:internal/modules/esm/resolve:1157:11)
[1] at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:390:12)
[1] at ModuleLoader.resolve (node:internal/modules/esm/loader:359:25)
[1] at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:234:38)
[1] at ModuleWrap. (node:internal/modules/esm/module_job:87:39)
[1] at link (node:internal/modules/esm/module_job:86:36) {
[1] code: 'ERR_MODULE_NOT_FOUND',
[1] url: 'file:///D:/Workplace/repository/research-portal/code/middleware/dist/app'
[1] }
[1]
[1] Node.js v20.12.2
[1] [nodemon] app crashed - waiting for file changes before starting...
[1] [nodemon] restarting due to changes...
[1] [nodemon] starting node --experimental-modules --es-module-specifier-resolution=node dist/index.js
[1] node:internal/modules/esm/resolve:265
[1] throw new ERR_MODULE_NOT_FOUND(
[1] ^
[1]
[1] Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'D:\Workplace\repository\research-portal\code\middleware\dist\app' imported from D:\Workplace\repository\research-portal\code\middleware\dist\index.js
[1] at finalizeResolution (node:internal/modules/esm/resolve:265:11)
[1] at moduleResolve (node:internal/modules/esm/resolve:933:10)
[1] at defaultResolve (node:internal/modules/esm/resolve:1157:11)
[1] at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:390:12)
[1] at ModuleLoader.resolve (node:internal/modules/esm/loader:359:25)
[1] at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:234:38)
[1] at ModuleWrap. (node:internal/modules/esm/module_job:87:39)
[1] at link (node:internal/modules/esm/module_job:86:36) {
[1] code: 'ERR_MODULE_NOT_FOUND',
[1] url: 'file:///D:/Workplace/repository/research-portal/code/middleware/dist/app'
[1] }

I am using node V 20.12.1 but i am getting this error. Give me solutions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests