![](/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.