在meteor中如何在通过LAN开发时改变开发环境的ROOT_URL

时间:2014-01-13 00:44:53

标签: meteor

我有一个linux盒子上的meteor,我通过SSH开发到windows笔记本电脑上。对于简单的应用程序,我可以在(windows)浏览器中将lan地址(10.0.1.101:3000)替换为localhost:3000并且它可以正常工作。

但是通过使用oauth w twitter的教程,在开发环境中,似乎流星硬编码ROOT_URL作为localhost并将其发送到twitter.js。即使在dev.twitter.com中我发送回调URL为

,也会发生这种情况
http://10.0.1.101:3000/_oauth/twitter?close. 

有没有办法在不是localhost的机器上开发?

2 个答案:

答案 0 :(得分:20)

您需要在启动meteor之前设置环境变量:

ROOT_URL=http://10.0.1.101:3000 meteor

答案 1 :(得分:0)

对我来说,它可以劫持请求并检查请求主机名,但是对于竞争条件可能不起作用,因为我不知道这是否是过程安全的:

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可在多个域中使用。