![](/img/trans.png)
[英]Node.js : “Cannot Find Module” error when a source file is put into a different folder
[英]Node JS cannot find module error for file in another folder
如果我在与index.js相同的文件夹中有schema.js,则执行以下操作
var schemas = require('./schema');
工作正常,但如果我将schema.js放在另一个文件夹中并编写
var schemas = require('./folder/schema');
我收到错误消息Cannot find module
发生了什么?
Edit1:我通过使用..folder / schema而不是single摆脱了错误。 服务器正在运行,但是它仍然无法正常工作,因为我无法使用index.js文件中从../model/schema通过module.export返回的mongoosedb对象。 它说myModel.find不是函数。 这是怎么回事??
控制器/findallusers.js
var myModel = require('../models/schema');
var alluser;
myModel.find({}, function(err, foundData){
if(err){
console.log(err);
res.status(500).send();
}
else{
alluser = foundData;
}
console.log(alluser); <-- this log is defined
});
console.log(alluser); <-- this log is undefined
module.exports = alluser; <-- cant export anything
正确解析schema.js的路径
假设您的项目结构是这样的
Project
|
+-- routers
| |
| +-- index.js
+-- models
| |
| +-- schema.js
//in index.js
var schemas = require('../models/schema');
要解决第二个错误,即myModel.find不是函数,请使用module.exports而不是使用module.export
module.exports = myModel;
解决您的第三个问题
// controllers/findallusers.js --> (keep name simple i.e userController.js)
var myModel = require('../models/schema');
module.exports = {
/**
* Get All Users
*/
list: function(req, res) {
myModel.find({},function(err, users){
if(err) {
return res.status(500).json({message: 'Error getting Users.'});
}
return res.json(users);
});
},
/**
* Keep Adding more functions as you want
*/
create: function(req,res){
//functionality to create user
},
delete: function(req,res){
// functionality to delete user
},
someDummyName: function(callback) {
myModel.find({},function(err, users){
if(err) {
return callback(err)
}
return callback(null,users);
});
}
}
//index.js call this new method i.e someDummyName as
router.get('/allusers', function(req, res){
userController.someDummyName(function(err,result){
if(err) {
//return err
}
//process result as per your need
});
});
您正在从schema.js导出变量myModel,并且仅在index.js中导入架构
因此,尝试使用myModel.myModel.find()
引用.find函数。我的猜测是myModel变量位于index.js中现有的myModel变量的后面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.