微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 节点错误:“无法找到模块’路由’”

2015年12月14日更新:我看到下一章指示读者创建’require’模块,因此我将继续前进.这本书似乎编辑得很差 – 也许他们重新安排了一些内容,并没有注意到这些变化所犯的错误.根据我原来的问题,下面的内容肯定是乱序的.但即使这本书有一些错误,它也迫使我在外面阅读以理解这些错误,并将问题发布到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.书中的这个文件代码似乎有两个错别字,我在这文件中已经更正了. (但也许我错过了其他人,或者“纠正”了那些错误.)

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

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

在configure.js文件中,我想我明白为什么我得到错误 – routes = require(‘./ routes’),语句似乎需要一个尚不存在的模块,因为这本书没有’ t描述了如何创建它,并且它似乎没有通过早期的npm命令安装.但是,我是新手(正如我一直说的那样)所以我可能错了.谁能帮我弄清楚这里出了什么问题?

另外,如果你碰巧想推荐一本好学习Express的书,我会全力以赴 – 也许我应该放弃这本书,先从一本教授更多基础知识开始,然后再开始创建一个示例应用程序.

解决方法:

你的理解是正确的.当你需要这样的文件

routes = require('./routes')

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

既然你还没有创建那个文件,那么只要你点击那个需要它就会炸弹.

此外,路线通常设置如下

routes = require('./routes')

然后一段时间后你创建快递应用程序了

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

然后在routes.js你可以做类似的事情

var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
  res.render('hey this worked');
});

router.get('/another/route', function(req, res, next) {
  res.json({ hello: 'world' });
});

module.exports = router;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐