[解決済み] ReferenceError : window is not defined at object. <匿名希望> Node.js
質問
ここで似たような質問を見かけましたが、私の状況と一致するものはありません。私のウェブでは、3つの
JavaScript
ファイルです。
client.js
,
server.js
,
myModule.js
. で
client.js
というウィンドウ変数を作成します。
windowVar
そして、それにいくつかの属性を追加しています。で
myModule.js
他の属性を追加してそれを使用し、そのファイルをエクスポートして
server.js
.
client.js
:
window.windowVar= {
func1: function(args) {
//some sode here
},
counter:0
};
myModule.js
:
module.exports={wVar:windowVar, addMessage ,getMessages, deleteMessage};
windowVar.serverCounter = 0;
windowVar.arr1=[];
server.js
:
var m= require('./myModule');
をnode.jsで実行すると、以下のエラーが発生します。
ReferenceError : window is not defined at object.
<anonymous>
windowはブラウザのプロパティだと理解していますが、この場合、どのようにエラーを解決すればいいのでしょうか?何かご助言がありましたら、お願いします。
解決方法は?
window
はブラウザのもので、Node.jsには存在しないが、ES2020で導入された
globalThis
これは(JavaScriptの仕様の一部である)準拠したブラウザエンジンとNode.jsの両方で利用可能です。
もし、本当に
グローバル
を使用することで、Node.jsの
globalThis
または (古いバージョンの場合)
global
:
// BUT PLEASE DON'T DO THIS, keep reading
globalThis.windowVar = /*...*/:
// or
global.windowVar = /*...*/;
global
はNodeのグローバルオブジェクトの識別子です(NodeのAPIで先に定義されています)。
globalThis
が存在する場合)、例えば
window
はブラウザ上で使用されます。古い環境も含め、幅広い環境で実行される可能性のあるコードに。
const g = typeof globalThis === "object"
? globalThis
: typeof window === "object"
? window
: typeof global === "object"
? global
: null; // Causes an error on the next line
g.windowVar = /*...*/;
しかし Nodeのプログラムでは本当にグローバルな変数を作成する必要はありません。代わりに、モジュールのグローバル変数を作成するだけです。
let /*or `const`*/ windowVar = /*...*/;
...そして、あなたはそれをあなたの
exports
他のモジュールは必要に応じて参照するオブジェクトにアクセスできます。
関連
-
[解決済み】Javascript:getElementById対getElementsById(両方が別のページで動作する)。
-
[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?
-
[解決済み】このオブジェクトの "forEach "はなぜ関数でないのですか?
-
[解決済み] Node.jsで「btoaが定義されていない」エラーが発生する
-
[解決済み] URLを新しいタブで開く(新しいウィンドウではない)
-
[解決済み] Babel 6 regeneratorRuntimeが定義されていません。
-
[解決済み] Node.jsで「ReferenceError: primordials is not defined」を修正する方法
-
[解決済み] Node.jsのバージョンはコマンドラインから?(REPLではありません)
-
[解決済み] Node.js上のクライアント。Uncaught ReferenceError: require は定義されていません。
-
[解決済み】JavaScriptで定義されていない変数を確認する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Facebook Graph API のクエリで with=location を使用すると "Uncaught (in promise) undefined" というエラーが発生する。
-
[解決済み】node.js TypeError: path must be absolute or specify root to res.sendFile [JSONのパースに失敗しました]。
-
[解決済み】React Js: Uncaught (in promise) SyntaxError: 位置 0 の JSON で予期しないトークン < が発生しました。
-
[解決済み】コンソールがUnterminated JSX contentsエラーを投げる【終了しました
-
[解決済み】Uncaught ReferenceError。Reactが定義されていない
-
[解決済み] エラー。モジュールhtmlが見つからない
-
[解決済み】エラー:リクエストのエンティティが大きすぎる
-
[解決済み】ETIMEDOUTエラーの対処方法は?
-
[解決済み] Uncaught (in promise) TypeError: フェッチに失敗してCorsエラー
-
[解決済み】Javascript、[オブジェクトHTMLInputElement]を表示中。]