我正在尝试建立一个系统来满足我们产品的新要求,我们在两个不同的端点上使用了相同的api。因此,我们首先通过调用https://testenv.com/api/createExperiment
之类的东西在测试环境中创建它。然后将其移至实时运行,我们需要调用相同的api,但调用不同的主机,例如https://liveenv.com/api/createExperiment
。
为了模仿此代码进行测试和开发,我现在启动两个具有相同API的json服务器,一个在localhost:9000
,另一个在localhost:9001
。
所以问题是使用webpack-dev-server能否代理/映射https://testenv.com/ -> localhost:9000
和https://liveenv.com/ -> localhost:9001
(在所有人质疑我的理智之前,我认为服务器应该执行所有这一切,而不是客户端,但现在我们必须这样做,因为我们可以更快地完成工作。)
我可以使用proxy命令让一个代理工作,所以我有https://testenv.com/api -> https://localhost:9000
。我尝试弄乱似乎与主机名有关的路由器选项,但它们不起作用。用一个简单的router: (req) => (console.log(req.headers);),
来查看可用的资源,看来主机至少在本地并没有真正被使用。
let router = {};
if (process.env.JSON_SERVER) {
proxyTarget = `https://localhost:${process.env.JSON_SERVER_PORT}`;
router[getHostName(lineConfig.npApiUrl)] = `https://localhost:${parseInt(process.env.JSON_SERVER_PORT) + 1}`;
router[getHostName(mgmtApiUrl)] = `https://localhost:${process.env.JSON_SERVER_PORT}`;
}
console.log(router);
return [
'@neutrinojs/react',
{
html: {
title: title,
baseHref: resolveBaseName,
config: JSON.stringify(config[line]),
template: path.resolve(__dirname, './neutrino-html.ejs'),
},
devServer: {
proxy: [{
context: ['/v1', '/v2'],
target: proxyTarget,
secure: false,
router,
changeOrigin: false,
}],
historyApiFallback: {
index: resolveBaseName,
},
port: devPort,
open: false,
},
publicPath: resolveBaseName,
env: ['BUILD_NUMBER'],
},
]
},