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?
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?
Share Improve this question edited Jul 3, 2021 at 14:54 user15388024 asked Jul 3, 2021 at 14:48 charlietlambcharlietlamb 1311 gold badge2 silver badges10 bronze badges 3-
2
Can you open a terminal and type
ls -l /Users/charlielamb/Desktop/learnCode/note-guard/data.js
? What's the output? – user15388024 Commented Jul 3, 2021 at 14:51 -
charlielamb@Charlies-MacBook-Air note-guard % ls -l backend/data.js -rw-r--r-- 1 charlielamb staff 269 3 Jul 15:46 backend/data.js
– charlietlamb Commented Jul 3, 2021 at 15:39 -
Where does
backend
e from? That's the wrong path. The file should be in/Users/charlielamb/Desktop/learnCode/note-guard/data.js
or you have to use different import paths. – user15388024 Commented Jul 3, 2021 at 18:16
2 Answers
Reset to default 2To 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
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}`);
});
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744749960a4591534.html
评论列表(0条)