Как проложить маршрут в экспрессе, используя механизм просмотра? - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь использовать ejs view engine, чтобы получить доступ к файлу без расширения .html в конце URL-адреса. Однако я получаю сообщение об ошибке.

const express = require('express')
const app = express()
const path = require('path')
app.set("view engine", "ejs");

app.use(express.static(__dirname + '/public'));
app.use('/', express.static('views/statics'));

const PORT = process.env.PORT || 3000;

app.listen(PORT,() => {
    console.log(`Server is listening on port ${PORT}`)
  });

app.get('/case/:case',(req,res,next)=> {
  res.sendFile(req.params.case, { root: path.join( __dirname, 'views/statics/case')})

})

Ошибка когда я пытался получить доступ к http://localhost:3000/case/firstcase

Error: ENOENT: no such file or directory, stat '.../app/views/statics/case/firstcase'

без прикрепления .ejs в конце первого регистра

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Структура каталогов:

- views
----- partials
---------- footer.ejs
---------- head.ejs
---------- header.ejs
----- pages
---------- index.ejs
---------- about.ejs
- package.json
- server.js

Вот сервер.js:

var express = require('express');
var app = express();

// set the view engine to ejs
app.set('view engine', 'ejs');
app.set('views',`${__dirname}/views`);

// use res.render to load up an ejs view file

// index page 
app.get('/', function(req, res) {
   res.render('pages/index');
});

// about page 
app.get('/about', function(req, res) {
res.render('pages/about');
});

app.listen(8080);
0 голосов
/ 29 марта 2019

server.js

const express = require('express')
const app = express()
const path = require('path')

app.set('views', path.join(__dirname, 'app/views')) // call folder views is folder name.
app.set("view engine", "ejs");

app.use(express.static(__dirname + '/public'));
//app.use('/', express.static('views/statics'));

const PORT = process.env.PORT || 3000;

app.listen(PORT,() => {
    console.log(`Server is listening on port ${PORT}`)
  });

app.get('/case/:case',(req,res,next)=> {
  //res.sendFile(req.params.case, { root: path.join( __dirname, 'views/statics/case')})
  res.render('statics/case/firstcase',{case : req.params.case});
})

app/views/statics/case/firstcase

<!DOCTYPE html>
<html lang="en">
<head>

<body>
<body>
<h1><%= case%></h1>
</body>
<html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...