0
votes

I have an express app to just serve static html files.

let express = require('express');
let path = require('path');
let cookieParser = require('cookie-parser');
let logger = require('morgan');

let indexRouter = require('./routes/index');
let usersRouter = require('./routes/users');
let appRouter = require('./routes/app');

let app = express();

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/app', appRouter);

module.exports = app;

In /public I have index.html and app.html

In /routes/ I have index.js and app.js

Both of them are basically identical

index.js

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

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

module.exports = router;

app.js

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

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

module.exports = router;

When I access localhost:3000 the index.html file is displayed perfectly.

When I access localhost:3000/app I get the error

Error: No default engine was specified and no extension was provided. at new View (C:\a\Web\todo\node_modules\express\lib\view.js:61:11) at Function.render (C:\a\Web\todo\node_modules\express\lib\application.js:570:12) at ServerResponse.render (C:\a\Web\todo\node_modules\express\lib\response.js:1008:7) at C:\Voliware\Web\todo\routes\app.js:5:9 at Layer.handle [as handle_request] (C:\a\Web\todo\node_modules\express\lib\router\layer.js:95:5) at next (C:\a\Web\todo\node_modules\express\lib\router\route.js:137:13) at Route.dispatch (C:\a\Web\todo\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (C:\a\Web\todo\node_modules\express\lib\router\layer.js:95:5) at C:\a\Web\todo\node_modules\express\lib\router\index.js:281:22 at Function.process_params (C:\a\Web\todo\node_modules\express\lib\router\index.js:335:12)

2

2 Answers

1
votes

You said 'just serve static html files.'. then mark the following 3 lines. // app.use('/', indexRouter); // app.use('/users', usersRouter); // app.use('/app', appRouter);

and access access localhost:3000/app.html not access localhost:3000/app. because you don't have a static file named 'app'.

0
votes

Try adding this to your middle ware stack

app.set('view engine', 'html');