Closed3
fresh で "Uncaught ReferenceError: Deno is not defined" が出たとき
原因
「モジュール自体に問題がある」/「モジュール自体には問題はない」の、2つの可能性がある
モジュール自体に問題があるとき
ここ ↓ で言われているように、server 用のコードが混入しているため
モジュール自体には問題はないとき
今回のエラーはこっちのケース
上の画像でエラーの発生箇所となっている constants.ts
のアドレスは、以下のようになっている
"https://deno.land/std@0.177.0/node/internal_binding/constants.ts"
std/node
以下のモジュールが読み込まれていることから、エラーの原因は以下のように推測される
-
esm.sh
が、対象のモジュールと一緒に「npm系モジュールを処理する deno の標準ライブラリ」をインポートさせている - この「npm系モジュールを処理するライブラリ」はクライアントでの利用を想定していない(= 利用できない)
- 結果、
esm.sh
経由のインポートにおいて、意図せずクライアントで処理できないコードが混入している
対策
モジュール自体に問題があるとき
モジュールを修正する
モジュール自体には問題はないとき
esm.sh
に deno用のインポートでないことを伝え、不要な std/node
のインポートを回避する
具体的には、以下の issue コメントにあるように esm.sh の ESBuild Options の指定 https://esm.sh/~~~~?target=***
を (デフォルトの deno から) es2022
に変更する。
// import * as PIXI from "https://esm.sh/pixi.js@7.2.2"
// ↓ ______________
import * as PIXI from "https://esm.sh/pixi.js@7.2.2?target=es2022"
このスクラップは2023/03/23にクローズされました