EJS ReferenceError: success_msg is not defined
EJS ReferenceError: success_msg is not defined
我目前正在为我的学校开发一个具有登录和管理功能的图书馆网站。
一般来说,我是 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');
我目前正在为我的学校开发一个具有登录和管理功能的图书馆网站。 一般来说,我是 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');