#javascript #express
#javascript #экспресс
Вопрос:
Я следую этому руководству:https://appdividend.com/2017/06/18/node-js-express-tutorial /
И провел много исследований, но почему-то не могу заставить его работать.
Мой код:
// 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:UsersKarolviews"
at Function.render (C:UsersKarolnode_modulesexpresslibapplication.js:580:17)
at ServerResponse.render (C:UsersKarolnode_modulesexpresslibresponse.js:1008:7)
at C:UsersKarolDesktopCBapp.js:27:7
at Layer.handle [as handle_request] (C:UsersKarolnode_modulesexpresslibrouterlayer.js:95:5)
at next (C:UsersKarolnode_modulesexpresslibrouterroute.js:137:13)
at Route.dispatch (C:UsersKarolnode_modulesexpresslibrouterroute.js:112:3)
at Layer.handle [as handle_request] (C:UsersKarolnode_modulesexpresslibrouterlayer.js:95:5)
at C:UsersKarolnode_modulesexpresslibrouterindex.js:281:22
at Function.process_params (C:UsersKarolnode_modulesexpresslibrouterindex.js:335:12)
at next (C:UsersKarolnode_modulesexpresslibrouterindex.js:275:10)
Это то, что я получаю при посещении localhost:port/items
(замените порт фактическим номером порта).
Ответ №1:
Существует проблема с разрешением views
пути. Попробуйте запросить path
модуль после express
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'));
Ответ №2:
Заменить :
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');
});
Ответ №3:
var path = require('path');
Попробуйте это, чтобы установить каталог для общего доступа следующим образом.
app.set('view_engine', 'ejs');
app.set('views', path.join(__dirname,'/views'))
Он получит каталог проекта и установит путь к представлениям.