Ответ 1
Перед запуском метеор необходимо установить переменную окружения:
ROOT_URL=http://10.0.1.101:3000 meteor
У меня есть метеор в ящике linux, который я разрабатываю через SSH на ноутбуке Windows. Для простых приложений я могу просто заменить lan-адрес (10.0.1.101:3000) на localhost: 3000 в браузере (windows), и он работает.
Но работая через учебник, который использует oauth w twitter, кажется, что meteor hardcodes ROOT_URL является локальным хостом, когда в среде разработки отправляет его в twitter.js. Это происходит, хотя в dev.twitter.com я дал URL обратного вызова как
http://10.0.1.101:3000/_oauth/twitter?close.
Есть ли способ разработать на машине, которая не является локальным хостом?
Перед запуском метеор необходимо установить переменную окружения:
ROOT_URL=http://10.0.1.101:3000 meteor
Для меня это работает путем перехвата запроса и проверки имени хоста запроса, но это может не сработать для условий гонки, так как я не знаю, является ли это безопасным для процесса:
WebApp.rawConnectHandlers.use((req, res, next) => {
var match: any
if(
req.url.startsWith('/_oauth/facebook') &&
(match = req.headers.host.match(/([a-zA-Z0-9-]+)\.domain.com/))
) {
Meteor.absoluteUrl.defaultOptions.rootUrl
= process.env.ROOT_URL
= match[0]
}
next()
})
Моя проблема заключалась в том, чтобы заставить oauth работать для нескольких доменов.