Javascript 使用NodeJS/npm调用本地JS包

Javascript 使用NodeJS/npm调用本地JS包,javascript,node.js,npm,Javascript,Node.js,Npm,我正在运行NodeJS,并通过npm安装了table2csv包 sudo npm install table2csv 现在,我试图在网页中使用此软件包,但我不知道如何正确调用它,下面是我的示例: <!doctype html> <html> <head> <meta charset="utf-8"> <!--/var/www/node_modules/table2csv/dist/table2csv.min.js--&

我正在运行NodeJS,并通过npm安装了table2csv包

 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>
----更新2----

始终在使用table2csv之前导入JQuery

(但问题仍未解决,因为无法加载库

----更新3-----

在使用cdn链接时,控制台给了我以下错误

未捕获的语法错误:在
上出现意外标记
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
的内容复制到我的html.Hallelujah中的
块中。

当使用
npm
时,你已经进入了一个
模块
世界(与你可能习惯的静态脚本世界相反)。因此,安装包所在的文件夹名为
节点模块

模块通常不影响全局名称空间,这意味着它们不提供任何可全局调用的内容,例如在内联事件侦听器中,如
onclick=“”

您不能直接从HTML中引用任何
node_模块
包,这将是一个巨大的安全问题,因为通常
node_模块
不在您的webroot中,并且允许访问webroot之外的文件和文件夹是非常不安全的

您现在有三种选择:

  • 深入了解模块和模块捆绑包的世界,如webpack。这可能需要3个月的时间来理解和使用,同时了解和理解您正在做的事情。如果您计划进行大量Javascript开发,这是无法避免的

  • /var/www/node_modules/table2csv/dist/table2csv.min.js
    复制到您的项目文件夹中,并像您自己的Javascripts一样包含它。这有一个缺点,即每次更新包时您都必须手动执行此操作

  • 找到承载所需文件的CDN(内容交付网络),并从那里引用它

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

  • 如果我使用第三个选项,我还能使用“onClick”功能吗?
    <script src="https://cdn.jsdelivr.net/npm/table2csv@1.1.3/dist/table2csv.min.js" integrity="sha256-O3PXZsVrc25oRq6k38cesC5NsdZOD/tMdjQXEWdaaZU=" crossorigin="anonymous"></script>