1

I am currently developing an API in Nodejs but I am having problems with the imports and I cannot fix them. I still have the error:

 **Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/Users/xxxx/WebstormProjects/app/src/loaders/index' imported from /Users/xxxx/WebstormProjects/app/src/index.js
 new NodeError (node:internal/errors:363:5)
    at finalizeResolution (node:internal/modules/esm/resolve:307:11)
    at moduleResolve (node:internal/modules/esm/resolve:742:10)
    at Loader.defaultResolve [as _resolve] (node:internal/modules/esm/resolve:853:11)
    at Loader.resolve (node:internal/modules/esm/loader:89:40)
    at Loader.getModuleJob (node:internal/modules/esm/loader:242:28)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:73:40)
    at link (node:internal/modules/esm/module_job:72:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}

I will take the example of the express module in my loaders:

My main index.js

import { expressInit} from "./loaders/express";
require('dotenv').config();

expressInit();

My file express.ts

import { HOSTNAME, PORT } from "../config/config";
const express = require( "express")
const app = express();
const bodyParser = require('body-parser');
const cors = require('cors')
const users = require("../api/routes/userRoute")


 export function expressInit() {
app.get('/status', (req:any, res: any) => {
    res.status(200).end();
});
app.head('/status', (req:any, res:any) => {
    res.status(200).end();
});

app.enable('trust proxy');
app.use(cors());
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.json())
app.use('/users', users)

app.listen(PORT, HOSTNAME, function() {
    console.log('Your server is ready');
    console.log('Server running at http://'+ HOSTNAME + ':' + PORT + '/');
});
app.get('/', (req:any,res:any) => {
    res.send('express connected');
})

};

I tried several things like putting "type": "module" in my package.json etc but nothing helps.

I add my package.json and ts.config :

{
  "name": "app",
  "version": "1.0.0",
  "description": "",
  "main": "src/index.js",
  "type": "module",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "babel-node": "babel-node --presets='@babel/preset-env' --ignore='foo|bar|baz'",
    "start:dev": "nodemon --exec npm run babel-node -- src/index.js",
    "start:debug": "nodemon --inspect src/app.js",
    "build": "rimraf ./build && tsc"
  },
  "keywords": [],
  "author": "SarahB",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.14.2",
    "@babel/node": "^7.14.2",
    "@babel/preset-env": "^7.14.2",
    "@types/mongoose": "^5.10.5",
    "@types/node": "^15.3.0",
    "eslint": "^7.26.0",
    "nodemon": "^2.0.7",
    "rimraf": "^3.0.2",
    "ts-node": "^9.1.1",
    "tslint": "^6.1.3",
    "typescript": "^4.2.4"
  },
  "dependencies": {
    "@babel/register": "^7.13.16",
    "@types/dotenv": "^8.2.0",
    "@types/express": "^4.17.11",
    "babel": "^6.23.0",
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "dotenv": "^9.0.2",
    "express": "^4.17.1",
    "mongoose": "^5.12.9"
  }
}


ts.config : 

{
    "compilerOptions": {
        "module": "commonjs",
        "esModuleInterop": true,
        "allowSyntheticDefaultImports": true,
        "target": "ES6",
        "noImplicitAny": true,
        "moduleResolution": "node",
        "sourceMap": true,
        "outDir": "dist",
        "baseUrl": ".",
        "paths": {
            "*": [
                "node_modules/*",
                "src/types/*"
            ]
        }
    },
    "include": [
        "src/**/*"
    ]
}

Thanks for your help. I've already read a lot of things about that, try a lot of things but I don't understand why it doesn't work. PS : I use :

  • nodemon
  • typescript and ts-node
  • and babel.

Thanks :).

SarahB
  • 135
  • 1
  • 11

0 Answers0