本地正常,AWS Amplify部署后HttpClient.get返回index.html而非资源文件
解决AWS Amplify部署Angular后静态资源请求返回HTML的问题
本地运行Angular项目时,通过HTTP请求./assets/data/test.txt可正常获取文件内容,但部署到AWS Amplify后,请求返回的却是Angular应用的HTML页面,进而触发ERROR Error: Invalid HTML: could not find <table>错误。以下是针对性解决方案:
调整Amplify重写规则
AWS Amplify默认重写规则会将所有未匹配到静态资源的请求导向index.html,导致assets目录下的文件请求被错误路由。需添加优先级更高的规则:- 进入Amplify控制台对应项目,打开左侧菜单「App settings」→「Rewrites and Redirects」
- 添加新规则:
- 源地址:
^/assets/(.*)$ - 目标地址:
/assets/$1 - 类型:
200 (Rewrite)
- 源地址:
- 将这条规则拖动到默认规则之前,确保优先匹配静态资源请求。
确认Angular assets配置
检查angular.json中的assets配置项,确保src/assets被正确纳入打包范围:"assets": [ "src/favicon.ico", "src/assets" ]修改后重新构建项目,再部署到Amplify。
修正请求路径
若组件是在路由路径下发起请求,相对路径可能出现解析错误,建议改用绝对路径:this.http .get("/assets/data/test.txt", { responseType: "text" }) .subscribe((data) => { console.log(data); });
内容的提问来源于stack exchange,提问作者Matthew Coatney
相关产品推荐
相关产品推荐

