当前位置: 代码迷 >> JavaScript >> JS,Express:无论遵循以下指南,都无法在目录中查找视图
  详细解决方案

JS,Express:无论遵循以下指南,都无法在目录中查找视图

热度:9   发布时间:2023-06-06 09:37:58.0

我正在遵循此指南: :

并且做了很多研究,但是不知何故无法使它起作用。

我的文件夹结构:

我的代码:

// 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 (用实际的端口号替换端口)。

解决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'));

更换:

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');
});
var path = require('path');

尝试以此为公众设置目录,如下所示。

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

它将获取项目目录并设置视图路径。

  相关解决方案