Function.Module._resolveFilename (module.js: 547: 15) в Function.Module._load - PullRequest
0 голосов
/ 04 сентября 2018

Я получаю следующую ошибку

Function.Module._resolveFilename (module.js: 547: 15) в Function.Module._load (module.js: 474: 25) в Module.require (module.js: 596: 17) по требованию (внутренний / module.js: 11: 18) на объекте. (C: \ Users \ u8ser \ Desktop \ Todo \ server.js: 25: 1) в Module._compile (module.js: 652: 30) Сбой приложения [nodemon] - ожидание изменений файла перед запуском

Исходный код PFB для вашей ссылки.

Мой файл server.js

var express = require("express");
var app = express();
var mongoose = require("mongoose");
var methodOverride = require("method-override");
var port = process.env.PORT || 8080;
var database = require('./config/database');
  var morgan = require("morgan");
var bodyParser = require("body-parser");

mongoose.connect('mongodb://localhost:27017', function(err){
    if (err){
        console.log(err);
    }else{
        console.log("Connected to DB");
    }
});

app.use(express.static(__dirname + '/public'));
app.use(morgan('dev'));
app.use(bodyParser.urlencoded({'extended':'true'}));
app.use(bodyParser.json());
app.use(bodyParser.json({ type : 'application/vnd.api+json'}));
app.use(methodOverride());

require('./models/routes')(app);

app.listen(port);
console.log("App listining to port" + port);

Мой файл rout.js

var Todo = require('./models/todo');

module.exports = function(app){

    app.get('/api/todos', function(req, res){
    Todo.find(function(err, todos){
        if (err)
        res.send(err)

        res.send(todos)

      });
    });

 // create todo and send back all todos after creation

app.post('/api/todos', function(req, res){

    // create a todo, information comes from AJAX request from Angular

    Todo.create({
        text : req.body.text,
        done : false
    }, function(err, todo) {
        if (err)
           res.send(err);

       //get and return all the todos after you create another

       Todo.find(function(err, todos){
           if (err)
               res.send(err)
            res.json(todos);
       });
    });

});

//delete a todo
app.delete('/api/todos/:todo_id', function(req, res){
    Todo.remove({
       _id : req.params.todo_id
    }, function(err, todo){
        if (err)
        res.send(err);

        //get and return all the todos after you create another
        Todo.find(function(err, todos){
            if (err)
            res.send(err)
            res.json(todos);
        });
    });
});


// server.js 
// application -------------------------------------------------------------
app.get('*', function(req, res) {
    res.sendfile('./public/index.html'); // load the single view file (angular will handle the page changes on the front-end)
});

};

Пожалуйста, посетите эту ссылку на github для получения полного исходного кода.

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

Я думаю, что вы написали неверный путь к файлу rout.js. Попробуйте

require('./app/models/routes')(app);

вместо

require('./models/routes')(app);
0 голосов
/ 04 сентября 2018

Проблема в файле server.js. Попробуйте с обновленным ниже решением

Server.js:

var express = require("express");
var app = express();
var mongoose = require("mongoose");
var methodOverride = require("method-override");
var port = process.env.PORT || 8080;
var database = require('./config/database');
  var morgan = require("morgan");
var bodyParser = require("body-parser");
var routes = require('./app/models/routes');
mongoose.connect('mongodb://localhost:27017', function(err){
    if (err){
        console.log(err);
    }else{
        console.log("Connected to DB");
    }
});

app.use(express.static(__dirname + '/public'));
app.use(morgan('dev'));
app.use(bodyParser.urlencoded({'extended':'true'}));
app.use(bodyParser.json());
app.use(bodyParser.json({ type : 'application/vnd.api+json'}));
app.use(methodOverride());

app.use('/api', routes); // you should add base path like this and assign routes

app.listen(port);
console.log("App listining to port" + port);

А в файле rout.js удалите / api, потому что мы добавили / api в качестве базового пути в server.js

var Todo = require('./todo');

module.exports = function(app){

    app.get('/todos', function(req, res){
    Todo.find(function(err, todos){
        if (err)
        res.send(err)

        res.send(todos)

      });
    });

 // create todo and send back all todos after creation

app.post('/todos', function(req, res){

    // create a todo, information comes from AJAX request from Angular

    Todo.create({
        text : req.body.text,
        done : false
    }, function(err, todo) {
        if (err)
           res.send(err);

       //get and return all the todos after you create another

       Todo.find(function(err, todos){
           if (err)
               res.send(err)
            res.json(todos);
       });
    });

});

//delete a todo
app.delete('/todos/:todo_id', function(req, res){
    Todo.remove({
       _id : req.params.todo_id
    }, function(err, todo){
        if (err)
        res.send(err);

        //get and return all the todos after you create another
        Todo.find(function(err, todos){
            if (err)
            res.send(err)
            res.json(todos);
        });
    });
});

// server.js 
// application -------------------------------------------------------------
app.get('*', function(req, res) {
    res.sendfile('./public/index.html'); // load the single view file (angular will handle the page changes on the front-end)
});

};

Схема должна быть создана ниже, но то, что вы делаете, неверно

var mongoose = require('mongoose');
const Schema = mongoose.Schema;
const BlogPost = new Schema({
  text : String,
  done : Boolean
});
module.exports = mongoose.model('Todo', BlogPost);
...