在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
就可以让我这样做。
答案 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