如何使用 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 模块编写的)
此时,只需按照以下步骤操作即可。
创建一个新的 Node.js 项目,并确保执行 npm init
以生成格式正确的 package.json
文件。
测试转换后的模块:测试 JayD3V 实施的更改文件:在与条形码解析器相同的目录中创建一个文件,并添加下面的脚本。
const BarCodeParser = require('./BarcodeParser.js');
let barcode = ']C101040123456789011715012910ABC123�39329784711�310300052539224711�42127649716';
console.log(BarCodeParser.parseBarcode(barcode));
- 然后使用
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..
)。
上面的代码片段中给出了一个有效的条形码示例。
我想使用 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 模块编写的)此时,只需按照以下步骤操作即可。
创建一个新的 Node.js 项目,并确保执行
npm init
以生成格式正确的package.json
文件。测试转换后的模块:测试 JayD3V 实施的更改文件:在与条形码解析器相同的目录中创建一个文件,并添加下面的脚本。
const BarCodeParser = require('./BarcodeParser.js');
let barcode = ']C101040123456789011715012910ABC123�39329784711�310300052539224711�42127649716';
console.log(BarCodeParser.parseBarcode(barcode));
- 然后使用
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..
)。
上面的代码片段中给出了一个有效的条形码示例。