this.util.TextEncoder не является конструктором только в электронном приложении (работает в хроме)

Я создаю приложение для сегментации тела, используя модель 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, electronic11.1.1, tfjs2.8.2

см. снимок экрана хрома и электронно-

В ХРОМЕ (нажмите, чтобы увеличить)

Chrome работает

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

В ЭЛЕКТРОНЕ (нажмите, чтобы увеличить)

электронное изображение


person hemant kumar    schedule 04.01.2021    source источник
comment
какую версию tfjs вы используете? Помогает ли этот ответ: https://stackoverflow.com/questions/62213645/error-loading-tensorflowjs-in-electron-app-nodejs?   -  person edkeveked    schedule 04.01.2021
comment
@edkeveked, я использую node v12.16.3, electronic11.1.1, tfjs2.8.2. Я попытался установить электрон, затем tfjs, а затем другие зависимости, но ничего не изменилось, он по-прежнему показывает ту же ошибку на экране консоли.   -  person hemant kumar    schedule 05.01.2021
comment
Вы тоже используете tfjs-node?   -  person edkeveked    schedule 05.01.2021
comment
да, сначала я пытаюсь, но теперь я удалил его, так как не могу упаковать его с помощью webpack   -  person hemant kumar    schedule 05.01.2021
comment
проверьте, я предоставил скриншоты   -  person hemant kumar    schedule 05.01.2021


Ответы (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(() => {
  //...
});

Как я сюда попал?

at first thanks to @edkeveked for his effort and pointing me to

Ошибка при загрузке TensorflowJS в приложении Electron (Nodejs)

Я получил решение, создав электронный проект hello world, а затем добавив tfjs, затем tfjs-backend-wasm. новый проект работает правильно, но даже перемещение node_modules из нового проекта в более старый не работает для более старого. но как только я изменил путь к wasm, он сработал без ошибок.

Обновлять:

теперь я сталкивался с проблемой несколько раз, и каждый раз она решается путем создания новой папки, сначала устанавливая электрон и сначала создавая простое электронное приложение, а затем устанавливая другие зависимости и копируя старый код в новую папку. (предупреждение: не копируйте папка модулей узла)

Вроде ошибка в tfjs или электроне

person hemant kumar    schedule 06.01.2021