我正在尝试将无角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"
},
答案 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
可以解决此问题。