Node.js Function.Module.\u在Function.Module.\u load处解析文件名(Module.js:547:15)
我得到以下错误 Function.Module._resolveFilename(Module.js:547:15)at Function.Module._load(Module.js:474:25)at Module.require(Module.js:596:17)at require(internal/Module.js:11:18)at Object。(C:\Users\u8ser\Desktop\Todo\server.js:25:1)在模块上。_compile(Module.js:652:30)[nodemon]应用程序崩溃-在启动前等待文件更改 PFB源代码供您参考 我的server.js文件Node.js Function.Module.\u在Function.Module.\u load处解析文件名(Module.js:547:15),node.js,express,module,node-modules,Node.js,Express,Module,Node Modules,我得到以下错误 Function.Module._resolveFilename(Module.js:547:15)at Function.Module._load(Module.js:474:25)at Module.require(Module.js:596:17)at require(internal/Module.js:11:18)at Object。(C:\Users\u8ser\Desktop\Todo\server.js:25:1)在模块上。_compile(Module.js:6
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);
My routes.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)
});
};
请访问此获取完整的源代码。问题在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);
在routes.js文件中删除/api,因为我们在server.js中添加了/api作为基本路径
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);
我认为你写的routes.js文件路径不正确。 试一试 而不是
require('./models/routes')(app);
module.js:549抛出错误;^错误:在Function.module处找不到模块“./models/routes”。\u在Function.module处解析文件名(module.js:547:15)。\u在Object处的require(internal/module.js:11:18)处加载(module.js:474:25)在module.require(module.js:596:17)处加载。(C:\Users\u8ser\Desktop\Todo\server.js:25:1)在模块上。_compile(Module.js:652:30)[nodemon]应用程序崩溃-在启动之前等待文件更改…我的坏消息。我在server.js中错误地导入了routes.js,这就是为什么您会看到上面的错误,现在就更正了。更新了我的答案,请检查它是否能正常工作module.js:549 throw err;^错误:在Function.module中找不到module.\u在Function.module中解析文件名(module.js:547:15).\u在module.require(module.js:596:17)中加载(module.js:474:25)在require(internal/module.js:11:18)在对象中加载(module.js:474:25)。(C:\Users\u8ser\Desktop\Todo\app\models\routes.js:1:74)在Module.Module.编译(Module.js:652:30)在Object.Module.扩展名..js(Module.js:663:10)在Module.load(Module.js:565:32)[nodemon]应用程序崩溃-在启动之前等待文件更改…这是路径问题。您需要更改var Todo=require('./models/Todo');to var Todo=require('./Todo');在routes.js文件中修复该问题。我更新了我的答案,请再试一次。还有一个问题,请帮助……我输入“things”,然后按Add New(添加新的)按钮,它们就消失了。Pro提示:这里有更好的接收效果:(1)将读者需要的一切都放在问题本身中;(2) 使用提供的代码格式化工具;(3) 使用简洁的标题描述你的问题;(4) 请不要帮我辩护。@三思:这不是我的领域,但你能建议Q作者提供更大的代码样本,并将GH链接放在末尾(或完全删除),以便生成所需的代码吗?如果可以进行编辑,问题可以重新打开。@Roshan请查看我的编辑并批准。这就是您需要发布问题的方式,以便快速解决问题并获得社区的更好支持。请在发布问题时也关注其他人的评论。欢迎来到stackoverflow:)
require('./models/routes')(app);