Вызов локального пакета JS с помощью NodeJS/npm

Я использую NodeJS и установил пакет table2csv через npm.

 sudo npm install table2csv

Теперь я пытаюсь использовать этот пакет на веб-странице и не могу понять, как его правильно назвать, вот мой пример:

<!doctype html>
<html>
  <head>
    <meta charset = "utf-8">
    <!--/var/www/node_modules/table2csv/dist/table2csv.min.js-->
    <script src=”node_modules/table2csv/dist/table2csv.min.js”></script>

    <script>function exportCSV(){
        var csv = $("#fullDataTable").table2CSV();
        window.location.href = 'data:text/csv;charset=UTF-8,'+ encodeURIComponent(csv);
    }
    </script>

</head>
<body>
    <table id = "fullDataTable">
        <thead>
            <tr>
              <th>Foo.</th>
              <th>bar.</th>
              <th>bla.</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>2</td>
                <td>3</td>
            </tr>
        </tbody>
    </table>
    <Button onclick = "exportCSV()">DOWNLOAD</button>
</body>
</html>

Полный путь к пакету — /var/www/node_modules/table2csv/dist/table2csv.min.js, и я пробовал такие варианты, как ../node_modules/table2csv/dist/table2csv.min.js, поскольку файл моей веб-страницы находится в /var/www/views.

(В настоящее время веб-страница отображается правильно, но ничего не происходит, когда я нажимаю кнопку Download)

Как правильно назвать пакет?

------ ОБНОВИТЬ ------

Вместо этого я добавил ссылку cdn, но функция/кнопка по-прежнему не работает.

<head>
<meta charset = "utf-8">
<!--/var/www/node_modules/table2csv/dist/table2csv.min.js-->
<script src = "https://cdn.jsdelivr.net/npm/[email protected]/src/table2csv.min.js"></script>

<script>function exportCSV(){
    var csv = $("#fullDataTable").table2CSV();
    window.location.href = 'data:text/csv;charset=UTF-8,'+ encodeURIComponent(csv);
}
</script>
</head>

---- ОБНОВЛЕНИЕ 2 ----

Всегда импортируйте JQuery до, используя table2csv!

(проблема все еще не решена, так как библиотека не загружается

---- ОБНОВЛЕНИЕ 3 -----

При использовании ссылки cdn консоль выдала мне следующие ошибки

Uncaught SyntaxError: Unexpected token < table2csv.min.js:1 на <!doctype html>, что кажется странным, а также

Uncaught TypeError: document.getElementById(...).table2csv is not a function
at exportCSV (about:11)
at HTMLButtonElement.onclick (about:34)

в строке 11: var csv = document.getElementById('fullDataTable').table2csv();

---- ОБНОВЛЕНИЕ 4 ----

Я сдался и просто скопировал содержимое table2csv.js в блок <script> в своем html. Аллилуйя.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
0
125
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Работая с npm, вы попали в мир module (в отличие от статичного мира скриптов, к которому вы, вероятно, привыкли). Следовательно, папка, в которой находятся установленные пакеты, называется node-modules.

Модули обычно не влияют на глобальное пространство имен, что означает, что они не делают ничего доступным для глобального вызова, например. встроенный прослушиватель событий, например onclick = "".

Вы не можете напрямую ссылаться на какие-либо пакеты node_modules из вашего HTML, это было бы огромной проблемой безопасности, поскольку, как правило, node_modules не находится внутри вашего веб-сайта, и разрешение доступа к файлам и папкам за пределами вашего веб-сайта будет быть крайне ненадежным.

Теперь у вас есть три варианта:

  1. Погрузитесь в мир модулей и сборщиков модулей, таких как веб-пакет. Это, вероятно, займет 3 месяца, чтобы понять и использовать, зная и понимая, что вы делаете. Если вы планируете активно разрабатывать Javascript, этого не избежать.

  2. Скопируйте /var/www/node_modules/table2csv/dist/table2csv.min.js в папку вашего проекта и включите его так же, как ваши собственные Javascripts. Недостатком этого является то, что вам придется делать это вручную каждый раз, когда вы обновляете пакет.

  3. Найдите CDN (сеть доставки контента), в которой размещен нужный файл, и создайте ссылку на него оттуда.

    <script src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/table2csv.min.js" integrity = "sha256-O3PXZsVrc25oRq6k38cesC5NsdZOD/tMdjQXEWdaaZU = " crossorigin = "anonymous"></script>
    

Если я использую третий вариант, могу ли я по-прежнему использовать функцию «onClick»?

Jessica Chambers 22.01.2019 15:42

Другие вопросы по теме