Angular 以角度动态更改代理配置目标

Angular 以角度动态更改代理配置目标,angular,Angular,在我的angular应用程序中,我使用由一些代理组成的代理配置文件。我的文件看起来像这样 { "/login": { "target": "http://w5:8080", "changeOrigin":true, "secure": false }, "/api/usersvcs/*": { "target": "http://w5:8080", "pathRewrite": {"^/api/usersvcs": ""}, "s

在我的angular应用程序中,我使用由一些代理组成的代理配置文件。我的文件看起来像这样

{
  "/login": {
    "target": "http://w5:8080",
    "changeOrigin":true,
    "secure": false
  },   
  "/api/usersvcs/*": {
    "target": "http://w5:8080",
    "pathRewrite": {"^/api/usersvcs": ""},
    "secure": false,
    "logLevel":"debug"
  },
  "/api/ordersvcs/*": {
    "target": "http://w5:8989",
    "pathRewrite": {"^/api/ordersvcs": ""},
    "changeOrigin":true,
    "secure": false,
    "logLevel":"debug"
  },
  "/api/paymentsvcs/*": {
    "target": "http://w5:9898",
    "pathRewrite": {"^/api/paymentsvcs": ""},
    "changeOrigin":true,
    "secure": false,
    "logLevel":"debug"
  },
}
proxy.conf.json

{
  "/login": {
    "target": "http://w3:8080",
    "changeOrigin":true,
    "secure": false
  },   
  "/api/usersvcs/*": {
    "target": "http://w3:8080",
    "pathRewrite": {"^/api/usersvcs": ""},
    "secure": false,
    "logLevel":"debug"
  },
  "/api/ordersvcs/*": {
    "target": "http://w3:8989",
    "pathRewrite": {"^/api/ordersvcs": ""},
    "changeOrigin":true,
    "secure": false,
    "logLevel":"debug"
  },
  "/api/paymentsvcs/*": {
    "target": "http://w3:9898",
    "pathRewrite": {"^/api/paymentsvcs": ""},
    "changeOrigin":true,
    "secure": false,
    "logLevel":"debug"
  },
}
此文件位于我的项目的根目录中(在src文件夹之外)。 如果我想使用托管在不同端口上的其他后端服务,每次都需要更改目标参数。在上面的文件中,我使用的是w3,然后是冒号后面的端口号。 如果我想使用w5,我必须像这样更改整个路径目标

{
  "/login": {
    "target": "http://w5:8080",
    "changeOrigin":true,
    "secure": false
  },   
  "/api/usersvcs/*": {
    "target": "http://w5:8080",
    "pathRewrite": {"^/api/usersvcs": ""},
    "secure": false,
    "logLevel":"debug"
  },
  "/api/ordersvcs/*": {
    "target": "http://w5:8989",
    "pathRewrite": {"^/api/ordersvcs": ""},
    "changeOrigin":true,
    "secure": false,
    "logLevel":"debug"
  },
  "/api/paymentsvcs/*": {
    "target": "http://w5:9898",
    "pathRewrite": {"^/api/paymentsvcs": ""},
    "changeOrigin":true,
    "secure": false,
    "logLevel":"debug"
  },
}
我正在使用
npmstart
命令,其中包含了
proxy.conf.json
文件,该文件在
package.json

"scripts":{
   ...
   "start": "ng serve --proxy-config proxy.conf.json --o",
   ...
},
是否可以更改目标主机名,就像我使用

npm启动w5


那么代理文件应该与上面的一样,目标是w5。

我不这么认为,但至少可以使用.js文件而不是.json文件(请参阅),从而使用变量(甚至环境变量)来避免重复。明白了,但是你能告诉我如何通过启动项目的命令将值传递给
proxy.conf.js
文件吗?我认为这是不可能的。