节点错误:"无法找到模块'路由'"

时间:2015-12-13 02:47:37

标签: javascript node.js express

2015年12月14日更新:我看到下一章指示读者创建“要求”#39;模块,所以我将继续前进。这本书似乎编辑得很差 - 也许他们重新安排了一些内容,并没有注意到这些改变所犯的错误。根据我原来的问题,下面的内容肯定是乱序的。但是,即使这本书有一些错误,它也迫使我在外面阅读以理解这些错误,并将问题发布到SO,这有助于我学习。谢谢你的帮助,伙计们!

我正在使用"使用MongoDB和Node.js进行Web开发 - 第二版"学习Node和MongoDB(令人惊讶,对吗?)。这本书的方法似乎是通过创建应用程序来引导读者,并且只是部分地解释了一切。所以当出现问题时,我不明白为什么会出错或如何解决问题。另外,到目前为止,我在书中发现了一些代码拼写错误,所以其中一个可能导致了我的问题。

现在,我正在尝试运行本书创建的server.js文件,并且我遇到了错误。我对Node,Express和完整堆栈一般都很新,所以错误可能是因为我真的很简单而且很明显。救命啊!

我的文件夹结构是: Folder Structure Node Modules文件夹有一堆文件夹,这些文件夹是在我运行此命令时创建的: npm install express morgan body-parser cookie-parser method-override errorhandler express-handlebars --save

到目前为止,我有两个文件,其内容直接从书中复制: server.js:

var express = require('express'),
    config = require('./server/configure'),
    app = express();

app.set('port', process.env.PORT || 3300);
app.set('views', __dirname + '/views');
app = config(app);

app.get('/', function(req, res){
    res.send('Hello World');
});
app.listen(app.get('port'), function(){
    console.log('Server up: http://localhost:' + app.get('port'));
});

在/ server /文件夹中的configure.js。书中的这个文件的代码似乎有两个错别字,我在这个文件中已经纠正过了。 (但也许我错过了其他人,或者#34;纠正了#34;那些不正确。)

var path = require('path'),
    routes = require('./routes'),
    exphbs = require('express-handlebars'),
    express = require('express'),
    bodyParser = require('body-parser'),
    cookieParser = require('cookie-parser'),
    morgan = require('morgan'),
    methodOverride = require('method-override'),
    errorHandler = require('errorhandler');

module.exports = function(app){
    app.use(morgan('dev'));
    app.use(bodyParser.urlencoded({'extended': true}));
    app.use(bodyParser.json());
    app.use(methodOverride());
    app.use(cookieParser('some-secret-value-here'));
    routes(app); //moving the routes to routes folder

    app.use('/public/',
        express.static(path.join(__dirname, '../public')));

    if('development' === app.get('env')){
        app.use(errorHandler());
    }
    return app;
};

在终端中,我输入node server.js。我收到一个错误: error returned by trying to run server.js

configure.js文件中,我想我理解为什么我会收到错误 - routes = require('./routes'),语句似乎需要一个尚不存在的模块,因为本书还没有描述如何创建它,它似乎没有通过早期的npm命令安装。但是,我对此很新(正如我一直在说的那样),所以我可能错了。任何人都可以帮我弄清楚这里出了什么问题吗?

另外,如果你碰巧想推荐一本学习Express的好书,我全神贯注 - 也许我应该放弃这本书,先从教授更多基础知识开始,然后再开始创建样本应用

2 个答案:

答案 0 :(得分:5)

您的理解是正确的。当你需要这样的文件时

android.content.res.Resources$NotFoundException: Resource ID #0xff7f0106

然后nodejs将在您站点的根路径中查找routes.js文件。

由于您还没有创建该文件,因此只要您点击该文件,它就会立即炸弹。

此外,路线通常设置如下

routes = require('./routes')

然后一段时间后,当您创建了快速应用程序时,您将会

routes = require('./routes')

然后在routes.js中你可能会做类似

的事情
app.use('/', routes); //sets up these routes on a base '/' route for your site

答案 1 :(得分:0)

我一直在使用同一本书,并且遇到了找不到模块./routes的相同问题。

然而,在撰写本书时,npm express版本为4.16.4,其中包含路由模块。一种解决方案是安装这样的路由:

  1. npm install express@4.16.4
  2. npm install express@4.16.4 routes@2.1.0
  3. npm install routes@2.1.0