首页 > 解决方案 > 错误:无法查找视图“感谢您加入我们的等候名单!” 在视图目录“C:\Users\mchio\JoinUs\views”中

问题描述

我是一名学习 Node.js 的学生。我需要帮助修复 Express 中的此查找错误。请注意,代码按预期工作,这意味着,它获取新用户的电子邮件地址,更新 MySQL DB,然后增加 UI 计数器。

问题是,它返回成功的“感谢您加入我们的等待列表”和“错误:无法查找视图...”错误消息。

我花了几个小时梳理 stackoverflow 和其他网站寻求帮助,但成功了。这是我第一次在这里发帖,请帮忙。谢谢!

我的代码:app.js

var express = require('express');

var mysql = require('mysql');


var bodyParser = require('body-parser');

var app = express();

var path = require('path');

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

app.engine('ejs', require('ejs').renderFile);

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

app.use(bodyParser.urlencoded({extended: true})); 


app.get("/", function(req, res){

    var q = "SELECT COUNT(*) AS count FROM users";
    connection.query(q, function (err, results){
        if (err) throw err;
        var count = results[0].count;
        res.render('home', {counter: count});  
    });
});



app.post("/register", function(req, res){
    var newuser = {
        email: req.body.email
    };

    connection.query('INSERT INTO users SET ?', newuser, function (err, results){
        if (err) throw err;
        res.render("Thank you for joining our wait list!");
    });

});

应用目录结构:

C:\Users\mchio\JoinUs

\node_modules(文件夹)、app.js、package.json、package-lock.json(文件)

\views(文件夹)

|--home.ejs (文件) |

home.ejs 文件

<h1>Welcome to JoinUS.COM</h1>

<p>Please enter your email to join <strong><%=counter%></strong> others on our waitlist. We are a fun START UP focusing on AI. </p>

<form method="POST" action="/register">
 <input type="text" name="email" class="form" placeholder="Enter Your Email">
 <button>Join Now</button>
</form>`enter code here

标签: node.jsexpress

解决方案


这是问题

res.render("Thank you for joining our wait list!");

所以你传递了错误的参数。它应该是 viewName。

因此,您可以在视图文件夹中传递 joinUs.ejs 文件。之后你可以做这样的事情

res.render('joinUs');

在您的代码中,当 nodeJs 找不到视图时,它会引发错误“无法查找视图”,如您所见。然后它将您在方法中传递的字符串返回到用户屏幕“感谢您加入我们的等待列表”。这就是为什么您同时有 2 个结果。


推荐阅读