当我使用ng build

时间:2018-02-22 06:26:03

标签: angular build cors

我正在使用角色5中的API调用的代理API设置,如本网站所述。https://juristr.com/blog/2016/11/configure-proxy-api-angular-cli/ 当我使用npm start时,这工作正常。但是当我构建它并在IIS上托管它时。它不起作用。我相信在dist文件夹中没有添加proxy.config.json。

3 个答案:

答案 0 :(得分:2)

代理在dev服务器处于活动状态时正在运行。 ng build不启动dev服务器,此命令仅构建项目。因此,您无法在已组装的项目中使用代理。您可以使用ng serve --proxy-config proxy.config.json --prod之类的smth在prod环境中使用代理

进行测试

如果您需要在制作中使用其他基本网址,则可以使用HttpInterceptor。只需创建这样的服务

@Injectable()
export class InterceptorsService implements HttpInterceptor {

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
      const proxyReq = req.clone({ url: `${ BASE_PATH }${ request.url }` });
      return next.handle(proxyReq);
    }
}

并将其添加到模块中的提供商

...
providers: [
    { provide: HTTP_INTERCEPTORS, useClass: InterceptorsService, multi: true }, ...
]
...

答案 1 :(得分:1)

此配置仅适用于您的开发设置,不应在生产中使用。您需要为生产环境包含其他解决方案才能运行。

答案 2 :(得分:1)

我遇到了同样的问题。我的proxy.config.json在我的开发环境中工作,但在PROD环境中无效,即使我用build构建--prod

找到方法之后,我找到了一个用中间件代替后端代码的解决方案(在我的情况下我使用了Nginx)。

如果您还使用了Nginx,则可以通过将其配置为nginx配置来执行代理后端。

nginx.conf

location /api/ {
  proxy_pass      http://127.0.0.1:8087; 
  #all incoming http request with /api/ will be forwarded to http://127.0.0.1:8087/api/
}