我有一个 Angular 18 的 ionic 应用程序,当我运行 ngserve 或 ionicserve 时它可以工作,但是当我将它推送到 git 以部署在我的 azure 静态 Web 应用程序上时,它显示的 bg 与我尝试使用电容器构建 APK 相同
这是我的 Angular.config
"projects": {
"app": {
"projectType": "application",
"schematics": {
"@ionic/angular-toolkit:page": {
"styleext": "scss",
"standalone": true
}
},
"root": "",
"sourceRoot": "src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "www",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": [
{
"glob": "**/*",
"input": "src/assets",
"output": "assets"
},
"src/manifest.webmanifest",
"src/manifest.webmanifest"
],
"styles": ["src/global.scss", "src/theme/variables.scss"],
"scripts": [],
"serviceWorker": true,
"ngswConfigPath": "ngsw-config.json",
"optimization": { "styles": { "inlineCritical": false } }
},
"configurations": {
"production": {
"serviceWorker": false,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "8kb",
"maximumError": "5mb"
}
],
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"outputHashing": "all"
},
"development": {
"buildOptimizer": false,
"optimization": false,
"vendorChunk": true,
"extractLicenses": false,
"sourceMap": true,
"namedChunks": true
},
"ci": {
"progress": false
}
},
"defaultConfiguration": "production"
},
当我从 www 文件夹打开它时,Index.html 也是空白的
我已经厌倦了更改基础和不同的构建类型,甚至要求 GPT 但什么也没有
当我从 www 文件夹打开它时,Index.html 也是空白的
此问题通常源于生产构建中的构建配置问题或运行时错误。
ng build --configuration production
) 后,使用简单的 HTTP 服务器(如 www
)提供 http-server
文件夹,而不是直接打开 index.html
。在浏览器中打开应用程序,然后按 F12
打开开发人员工具。Angular 应用程序依赖于
<base href="/">
中的 index.html
标签来解析相对 URL。不正确的基址 href
可能会导致资源无法正确加载。如果应用程序托管在子目录中,请调整基础href
,如下所示<base href="/subdirectory/">
)。
src/manifest.webmanifest
数组中列出了两次 assets
。删除重复项以避免潜在的冲突。"assets": [
{
"glob": "**/*",
"input": "src/assets",
"output": "assets"
},
"src/manifest.webmanifest"
],
在
build
选项中,serviceWorker
设置为 true
,但在 production
配置中,它设置为 false
。这种不一致可能会导致问题。
routes.json
文件:
{
"routes": [
{
"route": "/*",
"serve": "/index.html",
"statusCode": 200
}
]
}
有时,过时的构建缓存可能会导致意外问题。使用这个命令 -
ng build --configuration production --delete-output-path
来自本地,效果完美! 结果:
将应用程序部署到静态应用程序服务后: