Reputation: 131
I am getting an error when importing files into my node js server file. I usually do it in this way and all the paths are correct so I'm not sure what the error is.
import express from 'express'
import mongoose from 'mongoose'
import data from '../data.js'
import Page from "../models/pageModel.js";
const app = express()
mongoose.connect(process.env.MONGODB_URL || 'mongodb://localhost/note-guard', {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
});
app.get('/', (req, res) => {
res.send('Server is ready');
});
app.use('/api/pages/:id', async (req, res) => {
const createdPages = await Page.insertMany(data.pages);
console.log(createdPages);
res.send("test");
})
const port = process.env.PORT || 5002;
app.listen(port, () => {
console.log(`Serve at http://localhost:${port}`);
});
This is the error I get:
internal/process/esm_loader.js:74
internalBinding('errors').triggerUncaughtException(
^
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/Users/charlielamb/Desktop/learnCode/note-guard/data.js' imported from /Users/charlielamb/Desktop/learnCode/note-guard/backend/server.js
at finalizeResolution (internal/modules/esm/resolve.js:265:11)
at moduleResolve (internal/modules/esm/resolve.js:699:10)
at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:810:11)
at Loader.resolve (internal/modules/esm/loader.js:88:40)
at Loader.getModuleJob (internal/modules/esm/loader.js:241:28)
at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:56:40)
at link (internal/modules/esm/module_job.js:55:36) {
code: 'ERR_MODULE_NOT_FOUND'
}
Any help?
Upvotes: 2
Views: 14970
Reputation:
server.js
, data.js
and models
are in the same path. Fix the import paths:
import express from 'express'
import mongoose from 'mongoose'
import data from './data.js'
import Page from "./models/pageModel.js";
const app = express()
mongoose.connect(process.env.MONGODB_URL || 'mongodb://localhost/note-guard', {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
});
app.get('/', (req, res) => {
res.send('Server is ready');
});
app.use('/api/pages/:id', async (req, res) => {
const createdPages = await Page.insertMany(data.pages);
console.log(createdPages);
res.send("test");
})
const port = process.env.PORT || 5002;
app.listen(port, () => {
console.log(`Serve at http://localhost:${port}`);
});
Upvotes: 0
Reputation: 29
To be able to use import
expression in nodejs you should add following line to your package.json file: "type": "module"
. it's after "main": "index.js"
and before: "scripts"
section.
On the other hand you should use const express = require('express')
type of expressions
Also you should have the right structure of your project for package.json to be able recognize all your files as "module"
right:
root - client
- package.json for client
- server
- package.json for server
wrong:
root - client
- package.json
- server
- package.json
In order to help you I made a video about this https://youtu.be/NAq3P_QCcOg
Upvotes: 2