【问题标题】:this.util.TextEncoder is not a constructor only in electron app (works in chrome)this.util.TextEncoder 不是仅在电子应用程序中的构造函数(适用于 chrome)
【发布时间】:2021-04-10 05:14:34
【问题描述】:

我正在使用 tensorflow bodypix 模型创建一个身体分割应用程序。它在浏览器中运行良好。我正在使用 webpack 来使用它的模块(见下文)

import * as wasm from "@tensorflow/tfjs-backend-wasm";
import * as tf from "@tensorflow/tfjs-core";
import * as bodyPix from "@tensorflow-models/body-pix";

wasm.setWasmPaths("./wasm/");
tf.setBackend("wasm").then(() => {
  //some simple vanilla js code
});
//some more vanilla js code...

它在 chrome 中运行良好,运行 npx webpack 后按预期输出。

但是,当简单地通过创建一个主电子文件来使用电子运行它时,它只会输出一个空白的白色屏幕,并在控制台中显示以下错误-

Uncaught TypeError: this.util.TextEncoder is not a constructor
    at new <anonymous> (main.js:2)

它指向的行来自一个看起来像这样的缩小代码-

...SOME_CODE...&&Me().setPlatform("node",new class{
constructor(){this.util=n(758),this.textEncoder=new this.util.TextEncoder}...SOME_MORE_CODE...

我认为电子只是没有顶栏的铬,但这似乎是错误的。有人可以帮我吗 我正在使用以下版本-

“nodejs v12.16.3”、“electron11.1.1”、“tfjs2.8.2”

查看chrome和electron的截图-

IN CHROME(点击放大)

.................................................. .

IN ELECTRON(点击放大)

【问题讨论】:

  • 您使用的是哪个版本的 tfjs?这个答案有帮助吗:stackoverflow.com/questions/62213645/… ?
  • @edkeveked 我正在使用“node v12.16.3”、“electron11.1.1”、“tfjs2.8.2”。我已经尝试安装电子,然后是 tfjs,然后是其他依赖项,但没有任何改变,它仍然在控制台屏幕上显示相同的错误。
  • 你也在使用 tfjs-node 吗?
  • 是的,我最初正在尝试,但现在我已将其删除,因为我无法使用 webpack 打包它
  • 检查我是否提供了截图

标签: javascript webpack electron tensorflow.js bodypix


【解决方案1】:

解决方案

我以前有

wasm.setWasmPaths("./wasm/");
tf.setBackend("wasm").then(() => {
  //some simple vanilla js code
});

在我的主代码中,我已将文件夹从 wasm(dist/) 复制到项目的文件夹中。

从我的项目文件夹中删除相同的内容并将代码更改为 -

wasm.setWasmPaths("../node_modules/@tensorflow/tfjs-backend-wasm/dist/"); //or start from ./ if your main file is in same folder as node_modules
tf.setBackend("wasm").then(() => {
  //...
});

我是怎么回到这里的?

首先感谢@edkeveked 的努力并指出我

Error loading TensorflowJS in Electron App (Nodejs)

我通过创建一个电子 hello world 项目然后添加 tfjs,然后添加 tfjs-backend-wasm 得到了解决方案。新项目工作正常,但是即使将 node_modules 从新项目移动到旧项目也不适用于旧项目。但是一旦我更改了 wasm 路径,它就可以正常工作。

更新:

现在我已经多次遇到这个问题,每次都是通过创建一个新文件夹来解决的,首先安装电子并先创建一个简单的电子应用程序,然后安装其他依赖项并将旧代码复制到新文件夹中。(警告:不要'不复制节点模块文件夹)

好像是tfjs或者electron的bug

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 2013-11-29
    相关资源
    最近更新 更多