javascript - 在其他页面上没有问题的 EJS 部分在一个页面上抛出 500 错误
问题描述
我有一个页脚部分:
</main>
<footer class="pt-3 container">
<p id="copyright" class="">
Copyright 2020 Robert Greenstreet
</p>
<!-- <script src="/javascripts/jquery-ui.min.js" ></script> -->
<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>
<script src="/javascripts/script.js" type="text/javascript"></script>
<% if(page && == 'ownerDashboard') { %>
<script src="/javascripts/canvasRender.js"></script>
<% } %>
<script>
</script>
</footer>
</body>
</html>
它在所有其他页面上都可以正常加载,但是在这个特定页面上,只有在我注释掉那个小块时才会加载if
。这就像我没有传入page
变量一样。但即使我没有,它应该仍然可以工作,因为&&
运营商而工作,对吧?
这是页面 EJS 文件:
<%- include("../partials/header") %>
<div class="container mt-5">
<h1>
<%= currentCompany.name %>
</h1>
<div class="row shadow-md">
<div class="col">
<table class="table">
<!-- <thead>
<tr>
<th scope="col" class="border-0 bg-light"></th>
</tr>
</thead> -->
<tbody>
<tr>
<td class="border-0 align-middle">
Locations
</td>
<td class="border-0 align-middle">
<%= currentCompany.locations.length %>
</td>
</tr>
<tr>
<td class="border-0 align-middle">
Total Admins
</td>
<td class="border-0 align-middle">
<% let totalAdmins = 0 %>
<% for (let location of currentCompany.locations) { %>
<% totalAdmins += location.contacts.length %>
<% } %>
<%= totalAdmins %>
</td>
</tr>
<tr>
<td class="border-0 align-middle">
Total Users
</td>
<td class="border-0 align-middle">
<%= userCount %>
</td>
</tr>
<tr>
<td class="border-0 align-middle">
Total Forms
</td>
<td class="border-0 align-middle">
<% let totalForms = 0 %>
<% for (let location of currentCompany.locations) { %>
<% totalForms += location.contacts.length %>
<% } %>
<%= totalForms %>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<script>
</script>
<%- include("../partials/footer") %>
所有这些加载都很好,它只是页脚部分
这是节点render
调用(假设data
对象中的其他项目没有任何问题:
res.render('../views/company/profile.ejs', {currentCompany, userCount, page: 'companyProfile', title: 'Company Profile'})
有什么想法为什么会在这里给我带来麻烦?就像我说的,它在任何其他页面上都可以正常工作。我试过 ejs-lint 但我不知道如何让它真正向我展示任何有用的东西。他们的 NPM 自述文件没用。
解决方案
这段代码的第二部分有一个错误:
if (page && == 'ownerDashboard')
应该
if (page && someVariable == 'ownerDashboard')
或者如果是这样的话:
if (page && page == 'ownerDashboard')
只有在定义页面时才会出现错误,这就是其他页面正确加载的原因。
推荐阅读
- ms-access - 访问:表中的自动编译字段(不是查询)
- ruby - 在 Ruby 中使用 define_method 覆盖类的所有实例方法
- c# - 使用 UIAutomation 检索工具条按钮
- android - 如何在 Exoplayer 中仅缓存 DASH 的第一段?
- php - 如何在搜索中删除 html 标签
- css - 单击其他位置后侧面板不会消失
- jquery - 如何在数据表中首先显示特定的键值
- nginx - 由 certbot 生成的配置文件上的 ngnix www 到 no-www
- ruby - Ruby Roo Gem - 将 Excel xlsx 表读入哈希
- python - 安装 psutil 和配置 pypy 时出错