[解決済み] TypeError.を修正するには?他のモジュールのクラスを使用する場合、"Type Error: Right-hand side of 'instanceof' is not callable "を修正する方法は?
2022-02-11 20:18:14
質問
別のファイルにあるContextのインスタンスであるかどうかを確認しようとしたが、node jsは以下のようにスローする。
TypeError: Right-hand side of 'instanceof' is not callable.
index.js
const Transaction = require('./Transaction');
class Context {
constructor(uid) {
if (typeof uid !== 'string')
throw new TypeError('uid must be a string.');
this.uid = uid;
}
runTransaction(operator) {
return new Promise((resolve, reject) => {
if (typeof operator !== 'function')
throw new TypeError('operator must be a function containing transaction.');
operator(new Transaction(this))
});
}
}
module.exports = Context;
トランザクション.js
const Context = require('./index');
class Transaction {
constructor(context) {
// check type
if (!(context instanceof Context))
throw new TypeError('context should be type of Context.');
this.context = context;
this.operationList = [];
}
addOperation(operation) {
}
}
module.exports = Transaction;
別のjsファイル
let context = new Context('some uid');
context.runTransaction((transaction) => {
});
そしてそこで、次のように投げます。
TypeError: Right-hand side of 'instanceof' is not callable
.
解決方法は?
という問題があります。
循環型依存関係
. もう一方のファイルでは
index
,
index
が必要です。
Transaction
であり、かつ
Transaction
が必要です。
index
. そのため
transaction
を実行すると
index
,
そのモジュールはすでにビルドの過程にあります。
.
index
はまだ何もエクスポートしていないので、その時点でそれを要求すると、空のオブジェクトが生成されます。
どちらもお互いを呼び出す必要があるため、解決する方法の1つは、両方のクラスを一緒にして、両方をエクスポートすることでしょう。
// index.js
class Context {
constructor(uid) {
if (typeof uid !== "string") throw new TypeError("uid must be a string.");
this.uid = uid;
}
runTransaction(operator) {
return new Promise((resolve, reject) => {
if (typeof operator !== "function")
throw new TypeError(
"operator must be a function containing transaction."
);
operator(new Transaction(this));
});
}
}
class Transaction {
constructor(context) {
// check type
if (!(context instanceof Context))
throw new TypeError("context should be type of Context.");
this.context = context;
this.operationList = [];
console.log("successfully constructed transaction");
}
addOperation(operation) {}
}
module.exports = { Context, Transaction };
そして
const { Context, Transaction } = require("./index");
const context = new Context("some uid");
context.runTransaction(transaction => {});
関連
-
[解決済み] 解決済み】clearInterval()が動作しない [重複] [重複]
-
[解決済み】XMLHttpRequestモジュールが定義されていない/見つからない
-
[解決済み】「Uncaught TypeError: Chromeで "Illegal invocation "が発生する。
-
[解決済み】未定義のプロパティ 'bind' を読み込めない。React.js【重複あり
-
[解決済み】React、Uncaught ReferenceError。ReactDOMは定義されていません
-
[解決済み】Redux TypeError: 未定義のプロパティ 'apply' を読み取れない
-
[解決済み】XMLパースエラー:ルート要素が見つからない コンソールの場所 FF
-
[解決済み] ローカルファイルを開くことができません - Chrome: ローカルリソースのロードが許可されていません
-
[解決済み】React-Routerの子が1つしかない。
-
[解決済み】PhantomJS 2.1.1を使用してReactJSアプリケーションをレンダリングできない理由とは?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】JavaScriptで':'(コロン)は何をするのか?
-
[解決済み】webpack-dev-serverにリモート接続すると、「Invalid Host header」というメッセージが表示されます。
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み】JavaScriptのgetElementByNameが機能しない
-
[解決済み】JavaScript "Uncaught TypeError: object is not a function" 連想性の質問
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み】Uncaught ReferenceError。Reactが定義されていない
-
[解決済み】WebSocket接続に失敗しました。WebSocket のハンドシェイク中にエラーが発生しました。予期しない応答コードです。400
-
[解決済み】このオブジェクトの "forEach "はなぜ関数でないのですか?
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント