0

I am trying to run node.js project. I added "type":"module" in my package.json, it worked for import syntax. Next, I initialised my app with .babelrc. It seems to work but, I am expected to add .js extension at the end of my import statements. How can I avoid adding .js extension in import statements? Below is the error that I get when I run npm run dev:


Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/Users/nabeel.77.dev/Desktop/chat/graphql/resolvers' imported from /Users/nabeel.77.dev/Desktop/chat/server.js
Did you mean to import ../graphql/resolvers.js?
    at new NodeError (node:internal/errors:387:5)
    at finalizeResolution (node:internal/modules/esm/resolve:404:11)
    at moduleResolve (node:internal/modules/esm/resolve:965:10)
    at defaultResolve (node:internal/modules/esm/resolve:1173:11)
    at nextResolve (node:internal/modules/esm/loader:173:28)
    at ESMLoader.resolve (node:internal/modules/esm/loader:852:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:439:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:76:40)
    at link (node:internal/modules/esm/module_job:75:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}

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

my Package.json

{
  "type": "module",
  "dependencies": {
    "apollo-server": "^3.10.0",
    "esm": "^3.2.25",
    "graphql": "^16.5.0",
    "mysql2": "^2.3.3",
    "sequelize": "^6.21.3"
  },
  "scripts": {
    "dev": "nodemon server.js --exec babel-node",
    "start": "node server.js"
  },
  "name": "chat",
  "version": "1.0.0",
  "main": "server.js",
  "devDependencies": {
    "@babel/cli": "^7.1.2",
    "@babel/core": "^7.1.2",
    "@babel/node": "^7.0.0",
    "@babel/polyfill": "^7.0.0",
    "@babel/preset-env": "^7.1.0",
    "babel-cli": "^6.26.0",
    "babel-preset-es2015": "^6.24.1",
    "nodemon": "^2.0.19",
    "rimraf": "^3.0.2"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": ""
}

Node version: 18.7.0

Deviker
  • 29
  • 2
  • 7
  • 1
    "I am expected to add .js extension at the end of my import statements" yes, AFAIK that's how the spec is, and it works exactly the same in the browser (try using imports/exports without a build step, you'll see). Yes, I know that's not how Webpack, Rollup, Typescript, or literally *any* other tool in the ecosystem handles imports. Still, not nodejs' fault. You can get around it in node specifically by using a `.mjs` file extension. – Jared Smith Aug 08 '22 at 17:45
  • I think this is a duplicate of [this] question.(https://stackoverflow.com/questions/63459159/omit-the-file-extension-es6-module-nodejs) – Nemanja Jovic Aug 08 '22 at 18:04

0 Answers0