Я пишу приложение iOS/JavaScriptCore, которое вызывает код из файла Javascript. Мой код Javascript зависит от переменной io, созданной путем импорта socket.io.js. Все Javascript отлично работает при загрузке из файла HTML, но когда я загружаю socket.io.js в JavaScriptCore, переменная io не определена, и мой собственный Javascript не может работать.
My JSCore code looks like this...
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];
Обработчик исключений, определенный для контекста, возвращает эти ошибки, когда AssessmentScript запускается в импортированном файле socket.io...
TypeError: undefined is not an object (evaluating 'Object.prototype')
runInContext
webpack_require
webpack_require
webpack_require
webpackUniversalModuleDefinition
Функция connectToServer завершается ошибкой, поскольку она ожидает, что переменная io уже определена. кто-нибудь знает, почему переменная io не создается в контексте, когда я вызываю AssessmentScript на socket.io.js? Похоже, что в socket.io отсутствуют ожидаемые определения или другие ресурсы при оценке runInContext и webpackUniversalModuleDefinition, но я загружаю те же самые файлы Javascript в том же порядке, что и в моем файле HTML. Что мне здесь не хватает?
Я разрабатываю Xcode 9 на macOS High Sierra для iOS 11.
Спасибо!