Не удалось загрузить URL-адрес запуска с ошибкой: Ошибка Domain=TVMLKitErrorDomain Code=3 "(null)"
Описание:
Я создал новый проект TVML и запустил его. Первой ошибкой была App Transport Security, которую я исправил через Info.plist
:
App Transport Security Settings -> Allow Arbitrary Loads -> YES
Затем я запустил его снова, и я получаю эту ошибку:
Не удалось загрузить URL-адрес запуска с ошибкой: (null) appController(_:didFailWithError:) вызван с ошибкой: Ошибка Domain=TVMLKitErrorDomain Code=3 "(null)"
Проект вроде бы на этом останавливается (application func
в AppDelegate.swift
):
appControllerContext.launchOptions["BASEURL"] = AppDelegate.tvBaseURL
print(launchOptions) //returns nil
//error on following line
if let launchOptions = launchOptions as? [String: AnyObject] {
//does not enter here
for (kind, value) in launchOptions {
appControllerContext.launchOptions[kind] = value
}
}
Что я пробовал:
Я попытался изменить tvBaseURL с " http://localhost:9001/" на http://MY-IP-ADDRESS-HERE:9001/
но это ничего не изменило.
Вопрос:
Что является причиной этой ошибки и как ее решить?
2 ответа
Вы должны запустить сервер с номером порта
введите следующую команду в терминале
ruby -run -ehttpd . -p9001
И, наконец, ваш tvBaseURL должен перейти в папку на сервере, как это
"http://yourLocalhost:9001/Downloads/TVMLCatalogUsingTVMLTemplates/Server/"
Я также столкнулся с той же проблемой, я решил ее, изменив tvBaseURL в AppDelegate
static let tvBaseURL = "http://127.0.0.1:9001/Downloads/TVMLCatalogUsingTVMLTemplates/Server/"
Как видите - я должен показать точный путь к папке на сервере. Это также работает, если вы поместите его на какой-либо веб-сервер.
Надеюсь, что это может помочь!
Я просто столкнулся с этой проблемой. Вы должны обратить пристальное внимание на вывод терминала.
Я получил:
[2019-03-15 12:28:43] INFO WEBrick 1.3.1 [2019-03-15 12:28:43] INFO ruby 2.3.7 (2018-03-28) [universal.x86_64-darwin17] /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/socket.rb:205: in `bind': Address already in use - bind(2) for 0.0.0.0:9001 (Errno::EADDRINUSE)
Адрес уже используется - bind(2) для 0.0.0.0:9001
На этом этапе вам либо нужно выбрать другой номер порта (если вы решите сделать это, то убедитесь, что порт вашего сервера и порт вашего проекта XCode совпадают), либо убить предыдущий сервер с помощью ctrl + c
или просто убить это окно терминала.
Также обратите внимание, что в некоторых примерах проектов Apple ruby -run -ehttpd . -p9001
команда должна быть сделана в папке с именем Server, а для других она просто должна быть сделана в главной папке приложения. Просто посмотрите в файл README, чтобы понять это.