【问题标题】:TFLite gives Blob is not defined error when it is required in Node [closed]当 Node 中需要 Blob 时,TFLite 给出 Blob 未定义错误 [关闭]
【发布时间】:2021-07-01 15:04:49
【问题描述】:

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

【问题讨论】:

  • 你需要包含代码
  • 添加更多细节,之后您的问题可以重新打开。
  • 请具体@vitaliis,否则无济于事。你在这里缺少什么?显然,OP 正在尝试在 mocha 测试中使用特定的包,该包没有在浏览器中启动和运行,因此它在 Node 上运行,由于它不是为 Node 构建的,所以它失败了。所有这些都可以很容易地从问题中找到和/或推断出来。
  • 投票重新开放。

标签: javascript node.js tensorflow-lite tensorflow.js


【解决方案1】:

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

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

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

  1. 如果您真的想主要在 Node 中使用 TF,那么您使用了错误的包。 TF 的documentation 建议改为tfjs-node
  2. 如果您想主要在浏览器 (Web) 中运行 TF,请确保您 run your Mocha tests in a browser
  3. 或在您的测试套件中包含 Node 的 Blob polyfill
  4. 或者由于您使用的是 CommonJS 模块解析,您可以通过使用间谍/模拟来避免运行 TFLite,并使用 rewire 替换依赖项

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2020-01-11
    • 2019-05-08
    • 2021-01-01
    • 2021-11-11
    相关资源
    最近更新 更多