u936293
u936293

Reputation: 16264

Cannot find module

I have two short test files in the same folder as follows:

pi:~$ cat module.js
export let message = "Hello world";

pi:~$ cat index.js
import { message } from "./module"
console.log(message);

pi:~$ node -v
v14.12.0

pi:~$ pwd
/home/pi

I have "type": "module" in package.json. I then tried running node ./index.js, and got:

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/pi/module' imported from /home/pi/index.js
Did you mean to import ../module.js?
    at finalizeResolution (internal/modules/esm/resolve.js:276:11)
    at moduleResolve (internal/modules/esm/resolve.js:673:10)
    at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:784:11)
    at Loader.resolve (internal/modules/esm/loader.js:85:40)
    at Loader.getModuleJob (internal/modules/esm/loader.js:229:28)
    at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:51:40)
    at link (internal/modules/esm/module_job.js:50:36) {
  code: 'ERR_MODULE_NOT_FOUND'

What did I do wrong? Is the syntax: import { message } from "./module" incorrect?

Upvotes: 2

Views: 1135

Answers (1)

Yousaf
Yousaf

Reputation: 29334

You need to specify the file extension in the import statement

import { message } from "./module.js"

From Nodejs Docs - Differences between ES modules and CommonJS:

Mandatory file extensions

A file extension must be provided when using the import keyword. Directory indexes (e.g. './startup/index.js') must also be fully specified

Upvotes: 1

Related Questions