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 :).