partials中包含的脚本在ejs

时间:2017-04-18 10:25:56

标签: javascript jquery ejs

我在我的网站上使用lodash,它现在告诉我uniqBy不是一个功能。我想也许这是因为我使用了旧版本的库,所以我更新了它,但仍然有同样的问题。我通过ejs <%- include %>将它带入html,但是当使用类似ejs的东西时,lodash将无法按预期工作。我尝试使用_.uniqBy对数组进行排序,但除非我特意将lodash脚本插入到html中,否则它无法正常工作。

<%- include ../partials/scripts.ejs%>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/v/bs/dt-1.10.12/datatables.min.js"></script>
<script type="text/javascript" src="/js/accounting/dataTables.buttons.min.js"></script>
<script type="text/javascript" src="/js/accounting/jszip.min.js"></script>
<script type="text/javascript" src="/js/accounting/pdfmake.min.js"></script>
<script type="text/javascript" src="/js/accounting/vfs_fonts.js"></script>
<script type="text/javascript" src="/js/accounting/buttons.html5.min.js"></script>
<!-- <script type="text/javascript" src="/js/lodash.js"></script> Works with this -->
<script type="text/javascript">
    // Returns undefined unless the lodash script tag is uncommented
    console.log(_.uniqBy);
</script>
<script type="text/javascript" src="/js/cost/list.js">//Lodash used in here</script>
<%- include ../partials/footer.ejs%>

脚本部分是:

<script type="text/javascript" src="/js/jquery.min.js"></script>
<script type="text/javascript" src="/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/js/bootstrap-formhelpers.min.js"></script>
<script type="text/javascript" src="/js/select2.min.js"></script>
<script type="text/javascript" src="/js/moment.min.js"></script>
<script type="text/javascript" src="/js/lodash.js"></script>
<script type="text/javascript" src="/js/jquery.cookiebar.js"></script>
<script type="text/javascript" src="/js/slide.js"></script>
<script type="text/javascript" src="/js/email.js"></script>
<script type="text/javascript" src="/js/jspdf.js"></script>

在我的cost / list.js中,在使用lodash之前我使用jquery和document.ready()所以我的问题是为什么会发生这种情况?我想也许首先它是范围,但它不能在我到处使用这些文件,从来没有遇到过这个问题。然后我想也许是加载,因为包含部分的ejs可以在页面准备好之前或之后加载但是我的js cost / list.js应该等待它准备好由于$(document).ready()。我不确定问题是什么,关于ejs包含的内容的任何想法都会很棒。

1 个答案:

答案 0 :(得分:1)

稍微浏览一下页面,发现它的pdfmake也使用了lodash,但是他们使用的是旧版本(3.x),而今天我正在使用(4.17.4)这就是为什么因为pdfmakes lodash最后一次优先使用成为全球性的。希望这将有助于未来的人。检查你的脚本我逐一浏览它们,在每个其他脚本之后移动我的lodash脚本并找到它