javascript - Cannot Load Routes in ./src/routes/index.js from ./app.js -
very new nodejs here. i've tried put routes in app.js
without problem. however, after moving routes separate file under project_dir/src/routes/index.js
, , open page in browser says "cannot /wines
". here's code in app.js
, src/routes/index.js
:
// app.js var express = require('express'); var app = express(); var path = require('path'); global.app = express(); require('./src/routes/index'); // tried: require(path.join(__dirname, './src/routes/index')); global.server = app.listen(3000, '0.0.0.0', function () { var host = server.address().address; var port = server.address().port; console.log('example app listening @ http://%s:%s', host, port); });
// ./src/routes/index.js // tried console.error(app); , printed stuff app in server log app.get('/wines', function(req, res) { res.send([{name:'w1'}, {name:'w2'}]); }); app.get('/', function (req, res) { res.send('hello world!'); });
i'm sure i'm missing something. appreciated!
problem
honestly, not sure why doing not work.
the file can found because otherwise, node throw error, , fact can access app
routes file means app
accessible.
i have suspicion may due garbage collection -- because not hold reference module, may preemptively destroyed.
what's more, there construct in express called router probably exists exact purpose.
solution
while i'm not sure problem am sure solution -- use router, this:
var express = require('express'); var router = express.router(); router.get('/wines', function(req, res) { res.send([{name:'w1'}, {name:'w2'}]); }); router.get('/', function (req, res) { res.send('hello world!'); }); module.exports = router;
and in app.js
file, this:
var routes = require('./routes/index'); app.use('/', routes);
another benefit of routers not have pollute global object anymore..
Comments
Post a Comment