TFLite 在 Node 中需要时给出 Blob is not defined 错误

TFLite gives Blob is not defined error when it is required in Node

TFLite 节点模块在 Node.js 中需要时给出错误,它给出“Blob 未定义”错误。 https://www.npmjs.com/package/@tensorflow/tfjs-tflite

index.js 文件

require("@tensorflow/tfjs-tflite");

package.json 文件

{
    "name": "tfjs tflite test",
    "version": "1",
    "description": "",
    "main": "index.js",
    "scripts": {
    },
    "license": "UNLICENSED",
    "dependencies": {
        "@tensorflow/tfjs-tflite": "0.0.1-alpha.4",
    }
}

您可以在此处查看错误日志: https://i.stack.imgur.com/PInqK.png

TFLite 适用于网络 - 来自 tflite's documentation:“此软件包使用户能够 运行 网络上的任意 TFLite 模型”。但显然,您 运行 在网络环境之外 - 在 Node.

中使用它

TFLite 包含一个使用 Blob 解析字符串化 JS 的语句,如您在 tf-tflite.node.js:1261 中所见。 Blob 不为 Node 所知,这就是为什么在模块解析启动后你会得到 ReferenceError 的原因。

您有多种选择可以在测试中绕过它:

  1. 如果你真的想主要在 Node 中使用 TF,那么你使用了错误的包。 TF的documentation suggests tfjs-node代替。
  2. 如果您想 运行 主要在浏览器(网络)中使用 TF,请确保您 run your Mocha tests in a browser
  3. 或者在您的测试套件中包含一个用于 Node 的 Blob polyfill
  4. 或者因为您使用的是 CommonJS 模块解析,您可以通过使用 spies/mocks 避免 TFLite 成为 运行 并使用 rewire
  5. 替换依赖项