Search code examples
node.jsnodemonmjs

How to run ECMAScript (mjs files) with nodemon?


I am able to run mjs files with nodejs using --experimental-modules flag.

node --experimental-modules index.mjs

package.json:

{
    "name": "mjs-tests",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
        "dev": "nodemon index.mjs"
    },
    "keywords": [],
    "author": "",
    "license": "ISC",
    "dependencies": {
        "chalk": "^2.4.2",
        "uuid": "^3.3.2"
    },
    "devDependencies": {
        "nodemon": "^1.19.1"
    }
}

And index.mjs



import http from 'http'

const server = http.createServer((req, res) => {
    res.end('hello')
})

const PORT = 5000
server.listen(PORT, () => {
    console.log(`🏃‍♀️ Server is running at http://localhost:${PORT}`)
})

But if I try to

npm run dev

or (with nodemon installed globally)

nodemon index.mjs

I get this error

[nodemon] 1.19.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node index.mjs`
internal/modules/cjs/loader.js:821
  throw new ERR_REQUIRE_ESM(filename);
  ^

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module

So, How I can enable support for ECMAScript in nodemon? Or should I use something like esm?


Solution

  • Offcourse yes, All you need to modify your package.json a bit

      "scripts": {
            "dev": "nodemon --experimental-modules index.mjs"
        },
    

    enter image description here