/ / skrypty zawarte w częściach nie działają zgodnie z oczekiwaniami w ejs - javascript, jquery, ejs

skrypty zawarte w partials nie działają zgodnie z oczekiwaniami w ejs - javascript, jquery, ejs

Używam lodash na mojej stronie i terazmówiąc mi, że uniqBy nie jest funkcją. Pomyślałem, że to może być spowodowane używaniem przeze mnie starszej wersji biblioteki, więc zaktualizowałem ją i nadal miałem ten sam problem. Wprowadzam go do HTML poprzez ejs <%- include %> ale gdy używa się czegoś takiego jak ejs, lodash nie będzie działał zgodnie z oczekiwaniami. Próbuję użyć _.uniqBy aby posortować tablicę, ale chyba że nie wstawię skryptu lodash do html, to nie będzie działać.

<%- 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%>

Częściowe skrypty to:

<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>

W moim cost / list.js używam jquery z document.ready() zanim użyję lodash, moje pytanie brzmi: dlaczegoto się zdarzyło? Pomyślałem, że może najpierw był to zakres, ale nie może być tak, że używam tych plików wszędzie i nigdy wcześniej nie miałem tego problemu. Wtedy pomyślałem, że może to być ładowanie, ponieważ ej, w tym częściowe, mogą się ładować przed lub po przygotowaniu strony, ale mój koszt js / list.js powinien czekać, aż będzie gotowy z powodu $(document).ready(). Nie jestem pewien, na czym polega problem, a wszelkie pomysły dotyczące tego, co dzieje się z ejami, byłyby świetne.

Odpowiedzi:

1 dla odpowiedzi № 1

Poszedłem trochę dalej i dowiedziałem sięjego pdfmake używa również lodash, ale używają starszej wersji (3.x), podczas gdy dziś jestem na (4.17.4), dlatego jako pdfmakes lodash ma pierwszeństwo i staje się globalny. Mam nadzieję, że pomoże to komuś w przyszłości. Sprawdź swoje skrypty Przejrzałem je jeden po drugim, przesuwając mój skrypt lodash po każdym innym skrypcie i znalazłem go w ten sposób