Экспресс отображает index.html, но никакой другой страницы - PullRequest
0 голосов
/ 17 октября 2018

У меня есть экспресс-приложение для обслуживания статических html-файлов.

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;

В /public У меня index.html и app.html

В /routes/ У меня index.js и app.js

Оба они в основном идентичны

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;

Когда я получаю доступ к localhost:3000, файл index.html отображается идеально.

Когда я получаю доступ к localhost:3000/app, я получаю ошибку

Ошибка: движок по умолчанию не указан и расширение не указано.в новом представлении (C: \ a \ Web \ todo \ node_modules \ express \ lib \ view.js: 61: 11) в Function.render (C: \ a \ Web \ todo \ node_modules \ express \ lib \ application.js: 570: 12) в ServerResponse.render (C: \ a \ Web \ todo \ node_modules \ express \ lib \ response.js: 1008: 7) в C: \ Voliware \ Web \ todo \ rout \ app.js: 5: 9 в Layer.handle [as handle_request] (C: \ a \ Web \ todo \ node_modules \ express \ lib \ router \ layer.js: 95: 5) в следующем (C: \ a \ Web \ todo \ node_modules \экспресс \ lib \ router \ route.js: 137: 13) в Route.dispatch (C: \ a \ Web \ todo \ node_modules \ express \ lib \ router \ route.js: 112: 3) в Layer.handle [ashandle_request] (C: \ a \ Web \ todo \ node_modules \ express \ lib \ router \ layer.js: 95: 5) в C: \ a \ Web \ todo \ node_modules \ express \ lib \ router \ index.js:281: 22 в Function.process_params (C: \ a \ Web \ todo \ node_modules \ express \ lib \ router \ index.js: 335: 12)

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Вы сказали «просто обслуживайте статические HTML-файлы».затем отметьте следующие 3 строки. // app.use('/', indexRouter); // app.use('/users', usersRouter); // app.use('/app', appRouter);

и доступ access localhost:3000/app.html не access localhost:3000/app.потому что у вас нет статического файла с именем 'app'.

0 голосов
/ 17 октября 2018

Попробуйте добавить это в ваш промежуточный стек

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...