Javascript Node JS在另一个文件夹中找不到文件的模块错误
如果schema.js与index.js位于同一文件夹中Javascript Node JS在另一个文件夹中找不到文件的模块错误,javascript,node.js,express,Javascript,Node.js,Express,如果schema.js与index.js位于同一文件夹中 var schema=require('./schema') 工作正常,但如果我将schema.js放在另一个文件夹中并编写 var schemas=require('./文件夹/schema') 我收到一个错误找不到模块发生了什么 Edit1:我通过使用..folder/schema而不是single来消除错误。服务器运行,但仍然无法正常工作,因为我无法使用index.js文件中通过module.export from../model/
var schema=require('./schema')代码>
工作正常,但如果我将schema.js放在另一个文件夹中并编写
var schemas=require('./文件夹/schema')代码>
我收到一个错误找不到模块
发生了什么
Edit1:我通过使用..folder/schema而不是single来消除错误。服务器运行,但仍然无法正常工作,因为我无法使用index.js文件中通过module.export from../model/schema返回的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
var myModel=require('../models/schema');
var alluser;
myModel.find({},函数(err,foundData){
如果(错误){
控制台日志(err);
res.status(500.send();
}
否则{
alluser=foundData;
}
log(alluser);您正在从schema.js导出变量myModel,并在index.js中只导入schema
因此,请尝试使用myModel.myModel.find()
引用.find函数。我猜myModel变量位于index.js中现有myModel变量的后面
假设您的项目结构如下
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文件位于同一目录中?我的意思是,我有一个带有index.js的路由器文件夹和一个带有schema.js的模型文件夹,我使用模块导出schema对象。在schema,js中导出
,并尝试通过var schemas=require('./model/schema')在index.js中使用它;
看来.find()
是异步的。因此不可能通过module.exports返回它。相反,请导出一个接受回调或返回承诺的函数。@slebetman我正在做pawan提到的事情,导出一个函数list:funtion(req,res){}
但在list:function处出现语法错误(请求、回复){
发生了什么?在/models/文件夹中用您提到的内容创建了一个package.json文件。仍然出现错误无法找到模块。/models/schema'
使用。models/schema
解决了服务器上模块未找到错误的问题,但现在我无法使用从index.js.wha中的schema.js导出的数据库模型对象正在进行中…你能帮忙吗?这是我的尝试,以前从未使用过mongoose,但在我对它的初步研究中,我认为我的生活就是这样?在/model/schema之前使用两点刚刚解决了问题-\实际上它仍然不能正常工作。\我不能使用通过模块返回的mongoosedb对象。导出自。/model/schema
在index.js
文件中。它说myModel.find
不是一个函数。发生了什么事?我添加了代码,也直接在index.js中使用了模型/模式代码。只需仔细检查我编辑的答案,如果它解决了所有问题,请接受答案。请阅读我上次的编辑,我不久前使用了.exports(我太傻了)我陷入了一个新问题。你能告诉我为什么alluser在回调函数之后变得不明确吗?
//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
});
});