完全な方法ではないが、講じられる策をいくつか。
## [[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');
```