簡體   English   中英

React js - express:res.send Vs res.render 錯誤

[英]React js - express: res.send Vs res.render Error

我正在構建一個非常小的示例應用程序來練習登錄頁面。 我正在與:

1)引導程序

2) Bootswatch - 特別是日志形式

3)字體真棒

成功設置所有組件后,如果我在負責渲染 localhost:5000 窗口的index.js文件中應用以下更改,則會出現非常奇怪的錯誤

router.get('/', (req, res) => res.send('welcome')); <-- This way works

router.get('/', (req, res) => res.render('welcome')); <-- This way throws error

應用程序.js

const express = require('express');
const expressLayouts = require('express-ejs-layouts');

const app = express();
app.use(expressLayouts);
app.set('view engine', 'ejs');

// Routes
app.use('/', require('./routes/index'));
app.use('/users', require('./routes/users'));

const PORT = process.env.PORT || 5000;
app.listen(PORT, console.log(`Server started on port ${PORT}`));

索引.js

const express = require('express');
const router = express.Router();
router.get('/', (req, res) => res.send('welcome')); // <-- This way works
router.get('/', (req, res) => res.render('welcome')); // <-- This way throws error
module.exports = router;

用戶.js

const express = require('express');
const router = express.Router();

// Login Page
router.get('/login', (req, res) => res.send('Login'));
// Register Page
router.get('/register', (req, res) => res.send('Register'));
module.exports = router;

布局.ejs

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src="https://kit.fontawesome.com/My_KIT.js" crossorigin="anonymous"></script>
    <link rel="stylesheet" href="../components/bootstrap.min.css" />
    <title>App</title>
</head>
<body>
    <div class="container">
        <%- body %>
    </div>
    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>

</body>
</html>

錯誤:

錯誤:無法在 Function.render 的視圖目錄“/home/emanuele/Desktop/cashman-tracker-dashboard/views”中查找視圖“布局”(/home/emanuele/Desktop/cashman-tracker-dashboard/node_modules/express/ lib/application.js:580:17) 在 ServerResponse.render (/home/emanuele/Desktop/cashman-tracker-dashboard/node_modules/express/lib/response.js:1012:7) 在 /home/emanuele/Desktop/ cashman-tracker-dashboard/node_modules/express-ejs-layouts/lib/express-layouts.js:113:20 at tryHandleCache (/home/emanuele/Desktop/cashman-tracker-dashboard/node_modules/ejs/lib/ejs.js :260:5) 在 View.exports.renderFile [作為引擎] (/home/emanuele/Desktop/cashman-tracker-dashboard/node_modules/ejs/lib/ejs.js:459:10) 在 View.render (/home /emanuele/Desktop/cashman-tracker-dashboard/node_modules/express/lib/view.js:135:8) 在 tryRender (/home/emanuele/Desktop/cashman-tracker-dashboard/node_modules/express/lib/application.js :640:10) 在 Function.render (/home/emanuele/Desktop/cashman-tracker-dashboard/node_modules/express/ lib/application.js:592:3) 在 ServerResponse.render (/home/emanuele/Desktop/cashman-tracker-dashboard/node_modules/express/lib/response.js:1012:7) 在 ServerResponse.res.render (/主頁/emanuele/Desktop/cashman-tracker-dashboard/node_modules/express-ejs-layouts/lib/express-layouts.js:77:18)

到目前為止我做了什么:

1)我以為是render方法導致的錯誤,於是去查看官方文檔,但我寫的那一小部分代碼沒有發現任何問題。

2) 如果更容易理解,還提供了打印屏幕:

打印

請指出解決此問題的正確方向

查找目錄中沒有名稱為welcome view

當您使用res.send('welcome') ,express 將發送僅帶有welcome text的響應,因此它不會查找任何view頁面。

但另一方面,當您使用res.render它會搜索名稱為welcome.ejstemplate視圖。

res.render 用於加載一個 ejs 視圖文件

使用welcome.ejs在視圖中創建一個文件並嘗試。

希望這能解決問題。

暫無
暫無

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

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