【问题标题】:JsBarcode is not definedJsBarcode 未定义
【发布时间】:2021-10-22 06:20:50
【问题描述】:

在我的 node.js Web 应用程序中使用 jsbarcode 我无法摆脱错误:JsBarcode is not defined

在我的.ejs 文件中,我有以下代码:

<html>
<head>
    <meta charset="utf-8">
    <script src="https://cdn.jsdelivr.net/npm/jsbarcode@3.8.0/dist/JsBarcode.all.min.js"></script>
</head>
  <body>
        <svg id="barcode"></svg>
        <% JsBarcode("#barcode", obj[0].num); %>
  </body>
</html>

我很困惑为什么 JsBarcode 未定义?我已经尝试确保通过npm install jsbarcode --save 安装jsbarcode,并且在我的.ejs 文件的头部我已经包含了cdn &lt;script src="https://cdn.jsdelivr.net/npm/jsbarcode@3.8.0/dist/JsBarcode.all.min.js"&gt;&lt;/script&gt;

【问题讨论】:

    标签: javascript node.js ejs jsbarcode


    【解决方案1】:

    首先,EJS 是一个模板引擎,因此您通过 NPM 安装的包在这种情况下将无法工作(除非您注入内容)。

    在您的场景中,您可以将其视为任何其他 HTML 页面。只需使用 script 标记获取库,然后包含您的代码

    // template.ejs
    
    <svg id="barcode"></svg>
    
    <script src="https://cdn.jsdelivr.net/npm/jsbarcode@3.8.0/dist/JsBarcode.all.min.js"></script>
    <script>
      JsBarcode('#barcode', <%- obj[0].num %>)
    </script>
    

    请注意,还有一个更新版本的JSBarcode 可用,所以我想它也值得更新。

    <script src="https://cdn.jsdelivr.net/npm/jsbarcode@3.11.4/dist/JsBarcode.all.min.js"></script>
    

    【讨论】:

    • 当我使用&lt;script&gt; 标签时,我无法访问变量obj[0].num,这是为什么呢? (我在渲染页面时将变量传递给EJS
    • 如何将它从服务器传递到模板?您可以像这样在 EJS 中使用服务器端参数 &lt;script&gt;JSBarcode('#barcode', &lt;%- obj[0].num %&gt;)&lt;/script&gt;
    • 要访问 obj[0].num 变量,我使用了以下代码:'&lt;%= obj[0].num %&gt;'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多