![](/img/trans.png)
[英]Node.js - Globally installed module showing 'MODULE_NOT_FOUND'
[英]Node.js: require() and MODULE_NOT_FOUND
作为一个学习练习,我试图在 Node.js 中构建一个路由器,它是可重用的。
我的路由器的文件结构如下所示:
/myProject
app.js
/routes
index.js
about.js
/modules
/router
router.js
在app.js
,我创建了一个router
对象,并将路径传递给我的路由文件夹:
var Router = require('./modules/router/router');
var router = new Router('./routes');
在路由器对象的构造函数中,我将文件名从传递给对象的路径加载到数组中,并尝试将它们作为模块添加到对象中:
var fs = require('fs');
var routes = {}
var routesFolder;
function Router(routesPath){
this.routesFolder = routesPath;
fs.readdir(this.routesFolder, this.loadRoutes);
}
Router.prototype.loadRoutes(err, files){
for (var i=0;i<files.length;i++){
var c = files[i].split('.');
if(c[1] === 'js'){
try{
var t = require(routesFolder + '/' + c[0]);
routes['/' + c[0]] = t[c[0]];
}
catch(err){
console.log('Error parsing file: ' + files[i];
console.log(err);
}
}
}
}
我的index.js
和about.js
文件如下所示:
exports.index = function(req, res){
// Some code here
}
我运行node app.js
,并将路由器对象./routes
作为route
的路径传递。 文件名加载得很好,但我的控制台输出是:
Error parsing: index.js
{ [Error: Cannot find module './routes/index'] code: 'MODULE_NOT_FOUND' }
Error parsing: about.js
{ [Error: Cannot find module './routes/about'] code: 'MODULE_NOT_FOUND' }
我尝试以几种不同的方式更改我的路由文件:
module.exports = function(){...}
module.exports.index = function(){...}
但这没有效果。 根据我对node
和require
理解,这应该有效。 我是一个新手,所以如果这里的问题很愚蠢,请原谅我。
您应该使用routes
文件夹的绝对路径:
var path = require("path");
var Router = require('./modules/router/router');
var router = new Router(path.join(__dirname,'routes'));
我认为正在发生的事情是fs.readdir
正在使用process.cwd
,它是app.js
的目录,但require()
在解析相对路径时总是使用当前脚本的位置,因此正在寻找像/myProject/modules/router/routes/index.js
这样的文件/myProject/modules/router/routes/index.js
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.