我將 Node.js 與 Express 和 EJS 一起使用。
下面是我的代碼:
var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
var app = express();
var urlencodedParser = bodyParser.urlencoded({ extended: false });
var publicPath = path.resolve(__dirname, 'public');
app.use(express.static(publicPath));
//app.set('views', __dirname '/views');
app.set('view engine', 'ejs');
app.get('/form_get.html', (req, res) => {
res.sendFile(__dirname "/" "form_get.html")
})
app.get('/process_get', (req, res) => {
console.log(req.query.first_name);
res.render(path.join(__dirname '/views/thankyou.ejs'), { name: req.query.first_name});
})
var server = app.listen(3000, () => {
var host = server.address().address;
var port = server.address().port;
console.log(`Example app listening at ${host}:${port}`);
})
我的檔案夾結構如下:
- mysql(檔案夾)
- node_modules(檔案夾)
- app4.js(檔案)
- package.json(檔案)
- public(檔案夾,它包含 form_get.html)
- 視圖(檔案夾,它包含Thankyou.ejs)
問題是無法在 views 檔案夾中查找Thankyou.ejs。
我收到以下錯誤訊息:
錯誤:無法在視圖目錄“.../mysql/views”中查找視圖“thankyou.ejs”
可能是什么問題?
uj5u.com熱心網友回復:
渲染ejs檔案時,您不需要使用絕對路徑,因為默認情況下它將查看views檔案夾內部。此外,您不需要指定擴展名.ejs。試試這個:
var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
var app = express();
var urlencodedParser = bodyParser.urlencoded({ extended: false });
var publicPath = path.resolve(__dirname, 'public');
app.use(express.static(publicPath));
//app.set('views', __dirname '/views');
app.set('view engine', 'ejs');
app.get('/form_get.html', (req, res) => {
res.sendFile(__dirname "/" "form_get.html")
})
app.get('/process_get', (req, res) => {
console.log(req.query.first_name);
res.render('thankyou', { name: req.query.first_name});
})
var server = app.listen(3000, () => {
var host = server.address().address;
var port = server.address().port;
console.log(`Example app listening at ${host}:${port}`);
})
uj5u.com熱心網友回復:
使用時 請app.set('view engine', 'ejs');務必注意,res.render()將在views檔案夾中查找視圖。在這種情況下
我鏡像了你的專案,它在幾個微小的變化下作業正常......
專案檔案夾和檔案結構。

應用程式.js
var express = require("express");
var path = require("path");
var bodyParser = require("body-parser");
var app = express();
var urlencodedParser = bodyParser.urlencoded({ extended: false });
var publicPath = path.resolve(__dirname, "public");
app.use(express.static(publicPath));
app.set("view engine", "ejs");
app.get("/form_get", (req, res) => {
res.sendFile(__dirname "/" "form_get.html");
});
app.get("/process_get", (req, res) => {
res.render("thankyou");
});
var server = app.listen(3000, () => {
var host = server.address().address;
var port = server.address().port;
console.log(`Example app listening at ${host}:http://localhost:${port}`);
});
輸出:
http://localhost:3000/process_get ( thankyou.ejs ) 檔案。

輸出:
http://localhost:3000/form_get ( form_get.html ) 檔案

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/394560.html
標籤:javascript 节点.js 表达 ejs 节点模块
上一篇:如何將地圖和鉗位功能結合在一起
下一篇:單擊所有div后,如何更改CSS
