如何使用 npm 模块 gs1-barcode-parser?

How to use the npm module gs1-barcode-parser?

我想使用 Nodejs 从 GS1 数据矩阵 QR 码值中提取价格值。 使用模块

npm i gs1-barcode-parser

尝试了下面抛出的“parse Barcode”不是一个函数

const { parseBarcode } = require('gs1-barcode-parser');
let barcode = '\u001d01093393871222863922001405\u001d1522030631030006691095751410';
console.log(parseBarcode(barcode));

您正在 server-side(后端)

上使用它

https://www.npmjs.com/package/gs1-barcode-parser?msclkid=bb2e3c05cf5111ecabd6ce6b8aeb965a

如其文档所述,它是一个图书馆 它还说,为了使用 gs1-barcode-parser 你必须将它添加到你的应用程序中(在客户端/前端),如下所示:

<script src="./src/BarcodeParser.js"></script>

然后你就可以使用它提供的单一功能(parseBarcode)如下:

try {
        var barcode = document.getElementById("barcode").value,
            answer = parseBarcode(barcode);
        // do something ...    
} catch (e) {
    alert(e);
}

因此您尝试将模块导入 CJS 环境,但模块被编写为解析为前端 JavaScript 模块。

幸运的是,该软件包包含一个源文件,具有一个 IIFE 函数。

这将使它很容易修复!

请注意,虽然它只有一个文件和一个函数,但是文件和函数对于单个文件和单个函数来说确实很大,大到添加一个函数不是不可行的因此,它们作为 Stack Overflow 答案 中的一个片段;我创建了一个存储库,并将作为此问题 的解决方案的源代码 添加到存储库。我已经概述了需要对模块进行的更改,以使其在后端工作(在节点 REPL 中)。

我添加到 REPO 中的文件应该可以满足您当前的需要。 继续阅读


要转换您需要执行以下操作的模块...

你需要做的就是将包单源文件转换成Node模块,这很容易。该文件太长无法添加到 Stack Overflow 答案中。所以我所做的是将文件添加到位于 HERE.

的 public GitHub 存储库中

转到link我重写的文件

  • 该文件是this file.
  • 的模块转换
  • 查看这两个文件,以便了解我是如何进行更改的。

简而言之,模块的作者使用所谓的

编写了它

IIFE:立即调用函数执行

它是一种立即调用的函数。该函数的目的是在加载脚本的最开始调用。 IFFE 的负载高于一切,这就是他使用它来加载他的前端模块的原因。

整个模块是一个函数,整个模块像下面的例子一样被包裹起来:
(function (){ 
   // Function Logic Here. 
})();
基本上,我所做的是打开它,并向函数附加一个 module.export.BarcodeParser 赋值。

重申一下:Repo I Created

中获取新文件(或者从技术上讲,它是作为 CJS 模块编写的)


此时,只需按照以下步骤操作即可。

  1. 创建一个新的 Node.js 项目,并确保执行 npm init 以生成格式正确的 package.json文件。

  2. 测试转换后的模块:测试 JayD3V 实施的更改文件:在与条形码解析器相同的目录中创建一个文件,并添加下面的脚本。


const BarCodeParser = require('./BarcodeParser.js');

let barcode = ']C101040123456789011715012910ABC123�39329784711�310300052539224711�42127649716';

console.log(BarCodeParser.parseBarcode(barcode));

  1. 然后使用node命令执行文件。

存储库中的 README.md 文档包含我在此处添加的大部分信息。



这是我 运行 它时的样子:



我会使用模组 gs1-barcode-parser-mod2

const parser = require("gs1-barcode-parser-mod2")

let barcode = ']C101040123456789011715012910ABC1233932978471131030005253922471142127649716';
console.log(parser.parseBarcode(barcode));

很遗憾,您的条形码似乎无效。您将需要从 UTF-8 解码,因为这会导致 ∞01093393871222863922001405∞1522030631030006691095751410 即使您的条形码似乎缺少前缀,称为应用程序标识符或简称为 AI (]xxxxx..)。

上面的代码片段中给出了一个有效的条形码示例。

More info about application identifiers