完全な方法ではないが、講じられる策をいくつか。 ## [[Node.js]]の定義を除外する `esbuild.config.mjs` から以下の部分を外す。 ```js import builtins from "builtin-modules"; // const context = await esbuild.context({ plugins: [ esbuildSvelte({ compilerOptions: { css: "injected" }, preprocess: sveltePreprocess(), }), ], banner: { js: banner, }, entryPoints: ["src/main.ts"], bundle: true, external: [ "obsidian", "electron", "@codemirror/autocomplete", "@codemirror/collab", "@codemirror/commands", "@codemirror/language", "@codemirror/lint", "@codemirror/search", "@codemirror/state", "@codemirror/view", "@lezer/common", "@lezer/highlight", "@lezer/lr", // ★ここをコメントアウト // ...builtins, ], ``` これで[[Node.js]]の定義が読み込めなくなったので、エラーが出るなら[[Obsidian Mobile]]では動かないと言える。 ## ブラウザ用にビルドしてみる [[Obsidian]]とは関係なくライブラリ単体が[[Node.js]]なしで動作するかを確認したい場合。 対象ライブラリをimportしているファイルを[[esbuild]]の `--bundle --platform=browser` オプションつきで指定する。 ```console pnpm exec esbuild index.ts --bundle --platform=browser ``` [[Node.js]]依存のものがあると以下のようにエラーが出るので分かる。 ```error ✘ [ERROR] Could not resolve "util" node_modules/.pnpm/[email protected]/node_modules/micromatch/index.js:3:21: 3 │ const util = require('util'); ╵ ~~~~~~ The package "util" wasn't found on the file system but is built into node. Are you trying to bundle for node? You can use "--platform=node" to do that, which will remove this error. ✘ [ERROR] Could not resolve "path" node_modules/.pnpm/[email protected]/node_modules/picomatch/lib/utils.js:3:21: 3 │ const path = require('path'); ```