【发布时间】:2014-07-18 08:52:49
【问题描述】:
我想从我的 server.js 文件中分离出路由。
我在 Scotch.io 上关注本教程 http://scotch.io/tutorials/javascript/build-a-restful-api-using-node-and-express-4
如果所有行都在 server.js 文件上,它就可以工作。但我无法分开。我怎样才能做到这一点?
server.js
// set up ======================================================================
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
// configuration ===============================================================
app.use(bodyParser());
var port = process.env.PORT || 8000;
var mongoose = require('mongoose');
var database = require('./config/database');
mongoose.connect(database.url);
var Video = require('./app/models/video');
// routes =======================================================================
app.use('/api', require('./app/routes/routes').router);
// listen (start app with node server.js) ======================================
app.listen(port);
console.log("ready captain, on deck" + port);
module.exports = app;
还有 app/routes/routes.js
var express = require('express');
var router = express.Router();
router.use(function(req, res, next) {
console.log('Something is happening.');
next();
});
router.get('/', function(req, res) {
res.json({ message: 'hooray! welcome to our rest video api!' });
});
router.route('/videos')
.post(function(req, res) {
var video = new Video();
video.title = req.body.title;
video.save(function(err) {
if (err)
res.send(err);
res.json({ message: 'Video criado!' });
});
})
.get(function(req, res) {
Video.find(function(err, videos) {
if (err)
res.send(err);
res.json(videos);
});
});
module.exports.router = router;
【问题讨论】:
-
节点错误是什么?我认为 routes.js 中的
module.exports = { router: router }应该这样做 -
嗨@bbuecherl,我收到ReferenceError:视频未定义
-
您的视频似乎有小写的“v”,并试图为视频引用大写的“V”。
-
他好像找不到
Video,你需要把你的行var Video = require("./app/models/video");从server.js移到routes.js。 -
在 route.js 中包含 video.js 时,请使用正确的路径,例如“..\models\video”