🐕

Remix で Tensorflow.js の visor を使いたいときはパッチが必須

2023/12/21に公開

Tensorflow.js を remix で使いたいのですが、最近普通になった ESM でビルドしようとすると以下のエラーが出てしまってうまく動きませんが、パッチをしたら動きました。という記事です。

結論

pnpm patch を使って、 @tensorflow/tfjs-vis に以下のパッチをあてる。

diff --git a/dist/index.js b/dist/index.js
index 8b3e4da35cc1048ff486bb83740630eea6aa0f4b..aaf1814f493cd19dadad4039dd5ac74f1ac81444 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -21,7 +21,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
  */
 require("@tensorflow/tfjs-core");
 // tslint:disable-next-line: no-imports-from-dist
-require("@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops");
+//require("@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops");
 const barchart_1 = require("./render/barchart");
 const confusion_matrix_1 = require("./render/confusion_matrix");
 const heatmap_1 = require("./render/heatmap");

関連情報

pnpm dev で起動しようとすると以下のようなエラーが出るわけです。

$ pnpm dev

> my-remix-app@ dev /Users/coji/progs/spike/tensorflow/tensorflowjs-learning
> remix dev --manual


 💿  remix dev

 info  building...
 info  built (1.1s)
/Users/coji/progs/spike/tensorflow/tensorflowjs-learning/node_modules/.pnpm/@tensorflow+tfjs-core@4.15.0/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops.js:17
import './abs';
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at internalCompileFunction (node:internal/vm:77:18)
    at wrapSafe (node:internal/modules/cjs/loader:1288:20)
    at Module._compile (node:internal/modules/cjs/loader:1340:27)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
    at Module.load (node:internal/modules/cjs/loader:1207:32)
    at Function.Module._load (node:internal/modules/cjs/loader:1023:12)
    at Module.require (node:internal/modules/cjs/loader:1235:19)
    at require (node:internal/modules/helpers:176:18)
    at Object.<anonymous> (/Users/coji/progs/spike/tensorflow/tensorflowjs-learning/node_modules/.pnpm/@tensorflow+tfjs-vis@1.5.1_@tensorflow+tfjs-core@4.15.0/node_modules/@tensorflow/tfjs-vis/src/index.ts:19:1)
    at Module._compile (node:internal/modules/cjs/loader:1376:14)

同様の issue がここにもあるんですが、3年間そのまんまです。つら。
https://github.com/tensorflow/tfjs/issues/5697

結局下記で workaround としてパッチをあてるコメントをしてくださっているので、そのとおりにしたら動きました、ということなのでした。
https://github.com/tensorflow/tfjs/issues/4901#issuecomment-1720996580

この辺、tensorflow はちょっとつらいのかなあ。
Google さんおねがいしますよ〜

Discussion