到AWS的Angular Serverless部署会将base-href附加到url,导致重定向到404Error

时间:2019-02-02 00:23:26

标签: angular aws-lambda angular-universal serverless

我正在尝试将无角7网站部署到无服务器的AWS上。刚开始,我遵循了本教程: https://coursetro.com/posts/code/165/Deploying-your-Angular-App-to-a-Serverless-Environment-

部署后,我的URL附加了一个附加的 production / ,我认为这是由于我的base-href设置所致。

这会导致不必要的重定向到404。有人知道如何避免这种情况吗? 通过菜单导航非常有效

输入的网址:

https://7z48go76gd.execute-api.ap-southeast-1.amazonaws.com/production

加载后:

https://7z48go76gd.execute-api.ap-southeast-1.amazonaws.com/production/production

我尝试使用environment.prod.ts,environment.serverless.ts以及具有不同变体但没有运气的package.json文件。

environment.serverless.ts / environment.prod.ts:

export const environment = {
  production: true,
  BASE_URL: 'https://tj2rdz0qn1.execute-api.ap-southeast-1.amazonaws.com/production',
  // when you deploy your app to your own server you should replace the BASE_URL with the target domain for example:
  // BASE_URL: 'https://site-preview.angular-templates.io',
  baseHref: '/'
};

package.json:

  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "lint": "ng lint crc-web",
    "build:client-and-server-bundles": "ng build --prod && ng run crc-web:server:production",
    "build:ssr": "npm run build:client-and-server-bundles && npm run compile:server",
    "compile:server": "tsc -p server.tsconfig.json",
    "serve:ssr": "node dist/server",
    "build:browser:prod": "ng build --prod",
    "build:browser:serverless": "ng build --prod --base-href /production/",
    "build:serverless": "npm run build:browser:serverless && npm run build:server:serverless",
    "build:prod": "npm run build:browser:prod && npm run build:server:prod",
    "server": "node local.js",
    "build:prod:deploy": "npm run build:prod && npm run deploy",
    "build:serverless:deploy": "npm run build:serverless && npm run deploy",
    "deploy": "serverless deploy",
    "build:server:prod": "ng run crc-web:server && webpack --config webpack.server.config.js --progress --colors",
    "build:server:serverless": "ng run crc-web:server:serverless && webpack --config webpack.server.config.js --progress --colors --max_old_space_size=8192",
    "fix-memory-limit": "cross-env LIMIT=2048 increase-memory-limit"
  },

3 个答案:

答案 0 :(得分:2)

尝试一下:

  

npm运行build:prod:deploy

脚本build:prod:deploy不会覆盖您的base-href。

脚本npm run build:serverless:deploy将base-href设置为'/ production /'(请查看package.json中的build:browser:serverless脚本)。

这似乎在无服务器Angular Universal中不一致,并且可能导致API Gateway阶段或自定义域出现多个问题。

如果这不能解决您的问题,请发布src / app / app-routing.module.ts和serverless.yml的内容

答案 1 :(得分:0)

它不能解决问题。 当它部署到api网关时,它位于/ production下 https://7z48go76gd.execute-api.ap-southeast-1.amazonaws.com/production

base-href必须为/ production才能在api网关中工作。否则您将无权访问https://7z48go76gd.execute-api.ap-southeast-1.amazonaws.com

绑定到自定义域时,需要base-href为/

我遇到了同样的问题,有人知道如何解决吗?

答案 2 :(得分:0)

我有同样的问题。 在package.json中,将脚本build:browser:serverless更改为ng build --prod可以解决此问题。