Ember CLI:如何获取代理来覆盖http-mock

时间:2014-11-01 06:24:54

标签: ember.js ember-cli

在Ember CLI中,如果定义了http-mock端点,我无法获取代理设置来覆盖它。例如:

在项目开始时,我像这样运行ember CLI:

$ ember s --proxy http://localhost:3000

然后我对/api/leads的API调用成功代理http://localhost:3000/api/leads。但是一旦我添加了一个http-mock,http-mock将始终统治:

$ ember g http-mock leads

即使我使用代理设置(ember s --proxy http://localhost:3000)运行Ember CLI,调用/api/leads将始终由http-mock处理,并且不会被代理。我可以让代理再次工作的唯一方法是删除引导http-mock。

有没有办法让代理设置覆盖http-mock?我想在开发“真正的”API时在使用http-mock和代理之间切换,我希望只需设置--proxy http://localhost:3000就可以让我这样做。

1 个答案:

答案 0 :(得分:1)

我们可以使用Node的环境变量来禁用http-mock。在/server/index.js中,将其添加到顶部附近:

  if (process.env.DISABLE_MOCK === 'true')
    return;

/server/index.js现在应该是这样的:

module.exports = function (app) {
  var globSync   = require('glob').sync;
  var bodyParser = require('body-parser');
  var mocks = globSync('./mocks/**/*.js', { cwd: __dirname }).map(require);
  var proxies    = globSync('./proxies/**/*.js', { cwd: __dirname }).map(require);

  if (process.env.DISABLE_MOCK === 'true')
    return;

  // other code here
}

现在,如果我们要禁用http-mock并代理所有ajax请求,您可以像这样运行Ember CLI。

$ DISABLE_MOCK=true ember s --proxy http://localhost:3000

这项技术是从@rwjblue借来的:http://discuss.emberjs.com/t/how-to-disable-http-mock-server-within-environment-config-file/6660/5