JS, Express: не удалось просмотреть представление в каталоге независимо от следующего руководства - PullRequest
0 голосов
/ 03 марта 2019

Я следую этому руководству: https://appdividend.com/2017/06/18/node-js-express-tutorial/

И провел много исследований, но почему-то не могу заставить его работать.

Структура моей папки: enter image description here

Мой код:

// app.js

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

app.use(express.static('public'));

app.listen(port, function(){
  console.log('Server is running on port:', port);
})
app.get('/', function(req, res){
    res.send('Hello Express');
});


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

var itemRouter = express.Router();

app.use('/items', itemRouter);

itemRouter.route('/').get(function (req, res) {
  res.render('items');
});

itemRouter.route('/single').get(function (req, res) {
  res.render('singleItem');
});

Мой вывод:

Error: Failed to lookup view "items" in views directory "C:\Users\Karol\views"
    at Function.render (C:\Users\Karol\node_modules\express\lib\application.js:580:17)
    at ServerResponse.render (C:\Users\Karol\node_modules\express\lib\response.js:1008:7)
    at C:\Users\Karol\Desktop\CB\app.js:27:7
    at Layer.handle [as handle_request] (C:\Users\Karol\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\Karol\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\Users\Karol\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\Users\Karol\node_modules\express\lib\router\layer.js:95:5)
    at C:\Users\Karol\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (C:\Users\Karol\node_modules\express\lib\router\index.js:335:12)
    at next (C:\Users\Karol\node_modules\express\lib\router\index.js:275:10)

Это то, что я получаю, когда посещаю localhost:port/items (замените порт на фактический номер порта).

Ответы [ 3 ]

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

Заменить:

app.use('/items', itemRouter);

itemRouter.route('/').get(function (req, res) {
  res.render('items');
});

itemRouter.route('/single').get(function (req, res) {
  res.render('singleItem');
});

на:

itemRouter.route('/items/').get(function (req, res) {
  res.render('items');
});

itemRouter.route('/items/single').get(function (req, res) {
  res.render('singleItem');
});
0 голосов
/ 03 марта 2019
var path = require('path');

Попробуйте установить каталог для публики следующим образом.

app.set('view_engine', 'ejs');
app.set('views', path.join(__dirname,'/views'))

Он получит каталог проекта и установит путь к представлениям.

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

Возникла проблема с разрешением views пути.Попробуйте потребовать path модуль после экспресса

var express = require('express');
var path = require('path');
var app = express();
var port = 3000;

и после настройки шаблона ejs добавьте:

app.set('view engine', 'ejs');
app.set('views', path.resolve(__dirname, 'views'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...