未正确调用带有端口的Angular 6 API URL。API端口在角度prod模式下消失

未正确调用带有端口的Angular 6 API URL。API端口在角度prod模式下消失,angular,nginx,amazon-ec2,angular6,Angular,Nginx,Amazon Ec2,Angular6,我有一个API URL,在我的angular应用程序中设置为全局变量: API_URL: 'http://52.109.53.23:3001' 我所有的API请求都通过这个URL,它在开发模式ng s下运行良好,但当我编译它用于生产ng build-prod并部署到我的ubunut nginx web服务器上时,请求失败,它们是错误的,API端口号丢失:这是控制台输出: Object { headers: {…}, status: 404, statusText: "Not Found", u

我有一个API URL,在我的angular应用程序中设置为全局变量:

API_URL: 'http://52.109.53.23:3001'
我所有的API请求都通过这个URL,它在开发模式ng s下运行良好,但当我编译它用于生产ng build-prod并部署到我的ubunut nginx web服务器上时,请求失败,它们是错误的,API端口号丢失:这是控制台输出:

Object { headers: {…}, status: 404, statusText: "Not Found", url: "http://52.109.53.23/auth/sign_in"

如果您注意到端口已消失,如何解决此问题?

在您的项目中,您应该有一个文件夹“environments”,其中包含两个标准文件:environment和environment-prod.ts。在这两种情况下,您可以添加任何您需要的内容

export const environment = {
   server : 'http://<ip>:<port>'
}
以后你可以引用它

import { environment } from '<wherever it is>';
然后通过environment.server引用它


当您执行产品构建环境时,根据官方文档,产品将用于有利于环境

ng build --prod
-prod meta标志包含以下构建优化功能

提前AOT编译:预编译角度组件 模板。 生产模式:部署生产环境,使 生产方式。 捆绑:将许多应用程序和库文件连接到一个 几捆。 缩小:删除多余的空白、注释和可选内容 代币。Uglification:重写代码以使用简短、神秘的变量 和函数名 死代码消除:删除未引用的模块和大量未使用的模块 密码 环境配置在v6中的angular cli配置文件angular-cli.json或angular.json中设置,默认情况下,该文件有两个选项:dev和prod

"environments": {
  "dev": "environments/environment.ts",
  "prod": "environments/environment.prod.ts"
}
对于v6+,angular.json环境在配置部分中配置

"configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ],
如果两个环境使用相同的url,则应在两个文件中定义该url

src/environments/environment.ts

src/environments/environment.prod.ts

要使用环境变量,只需按如下方式导入环境对象:

import {environment} from '../../environments/environment';

....

apiUrl = environment.API_URL;

....

是否通过环境类型设置检索此值?很可能您只在environment.ts中有变量,而在environment-prod.ts中没有变量,或者只是忘记了prod中的端口version@jcuypers不,你能告诉我怎么做吗。我只是创建了一个类global.ts,将API_URL作为cons,并将其注入我创建的所有服务中。它在dev中运行良好,但是当我编译时,请求是在没有端口号的情况下发出的?
export const environment = {
  production: true,
  API_URL: 'http://52.109.53.23:3001'
};
import {environment} from '../../environments/environment';

....

apiUrl = environment.API_URL;

....