Nelze najít modul '../modely/* Snaží vytvářet REST api v Node.js a MongoDB

0

Otázka

Začínáte vytvářet REST api s Node.js a Mongo DB Takže tam je něco, co chci vědět. Jsem stále tuto Chybu

Cannot find module '../models/book

S Podrobnější Chyby, jak je uvedeno níže :

PS D:\node_apps\mongo1> npm start

> [email protected] start D:\node_apps\mongo1
> node ./bin/www

internal/modules/cjs/loader.js:892        
  throw err;
  ^

    Error: Cannot find module '../models/book'
    Require stack:
    - D:\node_apps\mongo1\routes\users.js     
    - D:\node_apps\mongo1\app.js
    - D:\node_apps\mongo1\bin\www
        at Function.Module._resolveFilename (internal/modules/cjs/loader.js:889:15)
        at Function.Module._load (internal/modules/cjs/loader.js:745:27)
        at Module.require (internal/modules/cjs/loader.js:961:19)
        at require (internal/modules/cjs/helpers.js:92:18)
        at Object.<anonymous> (D:\node_apps\mongo1\routes\users.js:3:12)
        at Module._compile (internal/modules/cjs/loader.js:1072:14)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
        at Module.load (internal/modules/cjs/loader.js:937:32)
        at Function.Module._load (internal/modules/cjs/loader.js:778:12)
        at Module.require (internal/modules/cjs/loader.js:961:19) {
      code: 'MODULE_NOT_FOUND',
      requireStack: [
        'D:\\node_apps\\mongo1\\routes\\users.js',
        'D:\\node_apps\\mongo1\\app.js',
        'D:\\node_apps\\mongo1\\bin\\www'
      ]
    PS D:\node_apps\mongo1> npm start
    
    > [email protected] start D:\node_apps\mongo1
    > node ./bin/www
    
    internal/modules/cjs/loader.js:892        
      throw err;
      ^
    
    Error: Cannot find module './routes/books'
    Require stack:
    - D:\node_apps\mongo1\app.js
    - D:\node_apps\mongo1\bin\www
        at Function.Module._resolveFilename (internal/modules/cjs/loader.js:889:15)
        at Function.Module._load (internal/modules/cjs/loader.js:745:27)
        at Module.require (internal/modules/cjs/loader.js:961:19)
        at require (internal/modules/cjs/helpers.js:92:18)
        at Object.<anonymous> (D:\node_apps\mongo1\app.js:9:15)
        at Module._compile (internal/modules/cjs/loader.js:1072:14)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
        at Module.load (internal/modules/cjs/loader.js:937:32)
        at Function.Module._load (internal/modules/cjs/loader.js:778:12)
        at Module.require (internal/modules/cjs/loader.js:961:19) {
      code: 'MODULE_NOT_FOUND',
      requireStack: [
        'D:\\node_apps\\mongo1\\app.js',
        'D:\\node_apps\\mongo1\\bin\\www'
      ]
    }
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! [email protected] start: `node ./bin/www`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the [email protected] start script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     C:\Users\emi\AppData\Roaming\npm-cache\_logs\2021-11-23T17_18_24_504Z-debug.log
    PS D:\node_apps\mongo1>
    PS D:\node_apps\mongo1> 

Můj zdrojový kód vypadá takto :

Database.js

var mongoose = require('mongoose');
mongoose.connect('mongodb+srv://admin:****@cluster0.cqryc.mongodb.net/test', {useNewUrlParser: true});

var conn = mongoose.connection;
conn.on('connected',function(){
    console.log('Connected');  
});

module.exports = conn;

userModel.js

var db = require('../database');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var BookSchema = new Schema({
    title : String,
    author : String,
    category : String,
});

module.exports = mongoose.model('Book',BookSchema);

users.js

var express = require('express');
var router = express.Router();
var Book = require('../models/book');


router.get('/', function(req, res) {
  Book.find({}).exec(function(err,books){
    if(err){
      res.send('error occured');
    }else{
      res.json(books);
    }
     });
});

router.get('/:id', function(req, res) {
  Book.findOne({
    _id : req.params.id
  }).exec(function(err,books){
    if(err){
      res.send('error occured');
    }else{
      res.json(books);
    }
     });
});


router.post('/',function(req,res){
  var newBook = new Book();
  newBook.title = req.body.title;
  newBook.author = req.body.author;
  newBook.category = req.body.category;
  newBook.save(function(err,book){
    if(err){
      res.send('error saving book');
    }else{
      res.send(book);
    }
  })
})

module.exports = router;

A App.js

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
const books = require('./routes/books');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/books', books);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});



// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});


app.use((err, req, res, next) => {
  // console.log(err);
  err.statusCode = err.statusCode || 500;
  err.message = err.message || "Internal Server Error";
  res.status(err.statusCode).json({
    message: err.message,
  });
});

module.exports = app;

Co dělám špatně? Prosím, potřebuji radu. Snažím se, aby to fungovalo, jen chybí to tady.

mongodb node.js rest
2021-11-23 17:32:32
2

Nejlepší odpověď

1

Mám to do práce. Schéma=> Tabulky , odvolávala jsem se na velmi špatné Informace, ale já mám všechno, co k práci dobrý

takže místo toho, var Book = require('../models/book'); skončil jsem s to

var Book = require('../models/userModel');

a pak jsem přidal to také app.use('/books', books);

a to vyřešit všechny problémy. Nastavení Cors taky a vše je v pořádku a funguje Správně <3

Díky všem , díky Craigu!

2021-11-23 18:30:15
0

Níže je místo, kde jste se snaží najít modul. říkáte, že je umístěn v adresáři, mimo ten, který používáte ke spuštění aplikace tady s ../

je to váš záměr?

var Book = require('../models/book');

Kniha má rád jako třídu, která byla vytvořena v rámci své aplikace, takže pokud je to správně, budete muset hledat v hierarchii a správně odkazovat. Pokud je ve stejném umístění jako výchozí .js soubor pak by to mělo být:

var Book = require('./models/book');

Edit - právě jsem viděl export.

userModel.js

var db = require('../database');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var BookSchema = new Schema({
    title : String,
    author : String,
    category : String,
});

module.exports = mongoose.model('Book',BookSchema);

tady dole to vypadá, že exportujete to jako knihu. Nejsem mistr tady, ale vždy, když jsem export třída I referenční pomocí

var Knihy = require('userModel.js')

takže .název souboru js.

2021-11-23 17:49:18

Mám to do práce. Dovolte mi psát odpověď.
Revan

Skvělé, jsem rád, že můj návrh pracoval
Craig

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................