私はJavaScriptファイルからコードを呼び出すiOS/JavaScriptCoreアプリケーションを作成しています。私のJavascriptコードは、socket.io.jsをインポートして作成した 'io'変数に依存します。 JavascriptはすべてHTMLファイルからロードされたときに正常に動作しますが、socket.io.jsをJavaScriptCoreにロードすると、io変数は定義されず、自分自身のJavascriptは実行できません。iOS用のJavaScriptCoreにsocket.ioをロード
マイJSCoreコードは次のようになりますevaluateScriptインポートsocket.ioファイル... TypeError: undefined is not an object (evaluating 'Object.prototype') runInContext webpack_require webpack_require webpack_require webpackUniversalModuleDefinition
ConnectToServer関数上で実行するとき...コンテキストのために定義され
NSString *socketPath = [[NSBundle mainBundle] pathForResource:@"socket.io" ofType:@"js"];
NSString *socketJS = [NSString stringWithContentsOfFile:socketPath encoding:NSUTF8StringEncoding error:nil];
JSValue *socketEval = [context evaluateScript: socketJS];
NSString *arPath = [[NSBundle mainBundle] pathForResource:@"arFunctions" ofType:@"js"];
NSString *arJS = [NSString stringWithContentsOfFile:arPath encoding:NSUTF8StringEncoding error:nil];
JSValue *arEval = [context evaluateScript: arJS];
JSValue *function = context[@"connectToServer"];
JSValue *result = [function callWithArguments:nil];
例外ハンドラは、これらのエラーを返します。関数は、io変数が定義されていることを期待しているため失敗します。誰かがsocket.io.jsでevaluateScriptを呼び出すと、io変数がコンテキスト内に作成されない理由を知っていますか? runInContextとwebpackUniversalModuleDefinitionが評価されたときにsocket.ioに予想される定義やその他のリソースがないようですが、HTMLファイルと同じ順序で同じJavascriptファイルをロードしています。私はここで何が欠けていますか?
は、私は感謝iOSの11のために
MacOSのハイシエラ上のXcode 9に開発しています!
は、それがwindow.WebSocket()を提供するブラウザ環境ですか? – dandavis
ブラウザで実行されていません。これはARkit iOSアプリケーションです。 –