簡體   English   中英

無法在視圖目錄中查找視圖“index.ejs”

[英]Failed to lookup view "index.ejs" in views directory

我的快速應用程序(app.js 文件)中有以下代碼:

const express = require("express");
const app = express();

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

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

app.listen(8080);

以及以下依賴項:

"ejs": "^2.6.1",
"express": "^4.16.3",
"request": "^2.87.0"

這是我的文件夾結構:

myapp
   app.js
   package.json
   views
      index.ejs
   node_modules
      [all node files]

但是當我運行應用程序時,它顯示了這個錯誤:

Failed to lookup view "index.ejs" in views directory "mylocaldirectory/myapp/views"

如果它有幫助,這里是其他錯誤消息:

  at Function.render (/mylocaldirectory/myapp/node_modules/express/lib/application.js:580:17)
    at ServerResponse.render (/mylocaldirectory/myapp/node_modules/express/lib/response.js:1008:7)
    at //mylocaldirectory/myapp/app.js:11:9
    at Layer.handle [as handle_request] (/mylocaldirectory/myapp/node_modules/express/lib/router/layer.js:95:5)
    at next (/mylocaldirectory/myapp/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/mylocaldirectory/myapp/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/mylocaldirectory/myapp/node_modules/express/lib/router/layer.js:95:5)
    at /mylocaldirectory/myapp/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/mylocaldirectory/myapp/node_modules/express/lib/router/index.js:335:12)
    at next (/mylocaldirectory/myapp/node_modules/express/lib/router/index.js:275:10)

如果我只使用res.send("SOME TEXT")我沒有錯誤,但是當我嘗試渲染一個 ejs 文件時,它沒有。 有什么問題?

在請求任何視圖文件之前,您需要設置view目錄和view viewengine

因此,您需要在app.get之前添加以下app.get

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

還有你的res.render('index.ejs'); 應該改為,

res.render('index');

希望這可以幫助!

您是否設置了視圖文件夾?

app.set('views', './views')

首先,您必須通過設置來告訴表達要使用的視圖引擎

javascript // set the view engine to ejs app.set('view engine', 'ejs');

當提到一個視圖時,你應該省略擴展名。 所以代替res.render('index.ejs'); 使用res.render('index'); .

由於您使用默認的視圖文件夾views來存儲視圖文件,因此不需要設置視圖文件夾。

確保公共文件夾中只有 css 文件。其他文件夾可以在公共文件夾之外。

當您的 ejs 視圖引擎無法找到文件或文件夾時,基本上會出現此問題。 所以做以下檢查:

1.檢查目錄名稱。 它應該是“觀點”而不是“觀點”。

2.檢查目錄下的文件是否具有正確的文件擴展名? 它應該是.ejs不僅沒有像其他人一樣.html.json等。

3. 使用以下代碼告訴 express 我將使用 ejs 視圖引擎:

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

試試這個它對我有用。

// view engine setup
app.set('view engine', 'ejs');    
app.set('views', __dirname + '/views');

我用過這個:

const express = require("express");
const server = express();
const path = require("path");

server.set("views", path.join(__dirname, "views"));
server.set("view engine", "ejs");
server.use(express.static("public"));

server.get("/", (req, res) => {
  res.render("index");
});

server.listen(8080);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM