javascript - EJS ReferenceError:未定义success_msg
问题描述
我目前正在为我的学校开发一个具有登录和管理功能的图书馆网站。一般来说,我是 node.js 和 EJS 的新手,最近我几乎重新设计了有关路由和页面服务的所有内容,以使用 EJS 和 express。为了实现用户反馈,我想使用 Flash 消息。
这是详细的错误:
ReferenceError: C:\Users\Juli\Documents\Git\gt-db\views\index.ejs:15
13| </div>
14| </nav>
>> 15| <%- include ("./partials/messages.ejs") %>
16| <div class="rect" id="rect">
17| <i class="fas fa-user-circle"></i>
18| <h1>Willkommen</h1>
C:\Users\Juli\Documents\Git\gt-db\views\partials\messages.ejs:1
>> 1| <% if(typeof errors != 'undefined'){ %> <% errors.forEach(function(error) { %>
2| <div class="alert alert-warning alert-dismissible fade show" role="alert">
3| <%= error.msg %>
4| <button type="button" class="close" data-dismiss="alert" aria-label="Close">
success_msg is not defined
at eval (C:\Users\Juli\Documents\Git\gt-db\views\partials\messages.ejs:22:8)
at messages (C:\Users\Juli\Documents\Git\gt-db\node_modules\ejs\lib\ejs.js:691:17)
at include (C:\Users\Juli\Documents\Git\gt-db\node_modules\ejs\lib\ejs.js:689:39)
at eval (C:\Users\Juli\Documents\Git\gt-db\views\index.ejs:12:17)
at index (C:\Users\Juli\Documents\Git\gt-db\node_modules\ejs\lib\ejs.js:691:17)
at tryHandleCache (C:\Users\Juli\Documents\Git\gt-db\node_modules\ejs\lib\ejs.js:272:36)
at View.exports.renderFile [as engine] (C:\Users\Juli\Documents\Git\gt-db\node_modules\ejs\lib\ejs.js:489:10)
at View.render (C:\Users\Juli\Documents\Git\gt-db\node_modules\express\lib\view.js:135:8)
at tryRender (C:\Users\Juli\Documents\Git\gt-db\node_modules\express\lib\application.js:640:10)
at Function.render (C:\Users\Juli\Documents\Git\gt-db\node_modules\express\lib\application.js:592:3)
at ServerResponse.render (C:\Users\Juli\Documents\Git\gt-db\node_modules\express\lib\response.js:1012:7)
at ServerResponse.res.render (C:\Users\Juli\Documents\Git\gt-db\node_modules\express-ejs-layouts\lib\express-layouts.js:77:18)
at C:\Users\Juli\Documents\Git\gt-db\routes\index.js:6:35
at Layer.handle [as handle_request] (C:\Users\Juli\Documents\Git\gt-db\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\Juli\Documents\Git\gt-db\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\Juli\Documents\Git\gt-db\node_modules\express\lib\router\route.js:112:3)
这是代码:
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<%= error.msg %>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<% }); %> <% } %> <% if(success_msg != ''){ %>
<div class="alert alert-success alert-dismissible fade show" role="alert">
<%= success_msg %>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<% } %> <% if(error_msg != ''){ %>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<%= error_msg %>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<% } %> <% if(error != ''){ %>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<%= error %>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<% } %>```
解决方案
看起来你只需要改变:
if(success_msg != '')
至
if (typeof success_msg !== 'undefined' && success_msg !== '')
正如您在下面看到typeof
的,即使变量不存在也可以使用,但尝试使用它会引发错误:
if (typeof success_msg !== 'undefined') {
console.log('it exists');
}
console.log('typeof works');
if (success_msg !== '') {
console.log('it exists');
}
console.log('equality check doesnt');
推荐阅读
- c++ - 在 Windows 64 位中静态编译 Paho MQTT 的问题
- python - 知道 sqlalchemy 过滤器何时发现某些东西
- python - 当我输入一个存储对象的变量时,它会不断返回该对象的实例,而不是我希望它返回的列表
- javascript - AngularJS - 数据未在“数据类”属性上呈现
- c# - 获取 FedEx 零售费率
- javascript - 如何打印反应深度结构的单个 div
- node.js - 谷歌云功能 - 错误:ENOENT:没有这样的文件或目录
- php - Symfony domcrawler 遍历多个表单选择提交按钮
- sql - 多个分析函数在大查询中消耗所有内存
- angular - 不发送放置请求角度