Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Node.js:require()和MODULE_NOT_FOUND大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
作为一个学习练习,我试在Node.js中构建一个路由器.这意味着可以重复使用.我的路由器的文件结构如下所示:

> / myProject

> app.js
> /路线

> index.js
> about.js

> / modules

> /路由器

> router.js

在app.js中,我创建了一个路由器对象,并将路径传递给我的routes文件夹:

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’作为路径路径传递.加载文件名很好,但我的控制台输出是:

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' }

我试图以几种不同的方式改变我的路线文件

@H_412_23@module.exports = function(){...} module.exports.index = function(){...}

但这没有效果.根据我对节点和要求的理解,这应该是有效的.我是一个新手,所以请原谅我,如果这里的问题是愚蠢的.

解决方法

您应该使用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 /这样的文件模块/路由器/路由/ index.js.

@H_502_72@

大佬总结

以上是大佬教程为你收集整理的Node.js:require()和MODULE_NOT_FOUND全部内容,希望文章能够帮你解决Node.js:require()和MODULE_NOT_FOUND所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。