Reputation: 16264
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
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