Reputation: 101
I am trying to make a node.js site that has multiple routers. The issue I am having is that the url localhost:3000/forms/createForm
returns a 404 not found error. I'm pretty new to node so i am not 100% sure what to search for. I am also new to Stack overflow so if I have missed anything let me know :)
Note: my routers have been registered in my app.js file.
project structure:
app
|-routes
| |-index.js
| |-forms.js
|-views
|-layout
|-forms
|-index.hbs
|-createForm.hbs
Here is my forms.js:
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('forms/index', { title: 'Forms' });
});
router.get('/createForm', function(req, res) {
res.render('forms/createForm', { title: 'Create Form' })
});
module.exports = router;
And here is the server activity:
GET /forms/ 200 1.461 ms - 2480
GET /stylesheets/lightTheme.css 304 0.443 ms - -
GET /forms/createForm 404 5.085 ms - 4039
GET /stylesheets/lightTheme.css 304 0.508 ms - -
App.js:
var formsRouter = require('./routes/forms');
...
app.use('/forms', formsRouter);
Upvotes: 2
Views: 55
Reputation: 1665
You registered the /createForm
route, not /forms/createForm
. Also, you only have one router. If you wanted to use multiple routers, you could do:
var express = require('express');
var mongoose = require('mongoose');
var formsRouter = express.Router();
formsRouter.get('/createForm', function(req, res) {
res.render('forms/createForm', { title: 'Create Form' })
});
var router = express.Router();
router.get('/', function(req, res, next) {
res.render('forms/index', { title: 'Forms' });
});
router.use('/forms', formsRouter);
module.exports = router;
Upvotes: 1