Function.Module._resolveFilename (module.js:547:15) at Funct



我收到以下错误

Function.Module._resolveFilename (模块.js:547:15( at Function.Module._load (模块.js:474:25( 在 Module.require (模块.js:596:17( 在 require(内部/模块.js:11:18( 在对象。(C:\Users\u8ser\Desktop\Todo\server.js:25:1( at Module._compile (module.js:652:30( [nodemon] 应用程序崩溃 - 在启动之前等待文件更改

您的参考的 PFB 源代码。

我的服务器.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);

我的路线.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 链接以获取完整的源代码。

问题出在服务器.js文件中。尝试使用以下更新的解决方案

服务器.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);

在路由中.js文件删除/api,因为我们在服务器中添加了/api 作为基本路径.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);

我认为你写了错误的路径到路由.js文件。 尝试

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

而不是

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

相关内容

最新更新