当我尝试使用
firebase deploy
命令部署我的 Angular Web 应用程序时,使用 firebase emulators:start
命令启动 firebase 模拟器,或者执行合并管道上的默认 github 部署时,我总是遇到相同的错误:
Could not determine the web framework in use.
Error: Unable to detect the web framework in use, check firebase-debug.log for more info.
Documentation: https://firebase.google.com/docs/hosting/frameworks/frameworks-overview
File a bug: https://github.com/firebase/firebase-tools/issues/new?template=bug_report.md
Submit a feature request: https://github.com/firebase/firebase-tools/issues/new?template=feature_request.md
We'd love to learn from you. Express your interest in helping us shape the future of Firebase Hosting: https://goo.gle/41enW5X
我看到很多帖子提到,这是身份验证的问题,您应该在 firebase cli 中注销并再次登录。就我而言,这没有帮助。
我还尝试重新运行
firebase init
命令,但这没有帮助。
这是我的 firebase 配置文件。除了公用文件夹位置之外,我没有更改任何内容:
firebase.json
{
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"hosting": {
"source": "dist",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"frameworksBackend": {
"region": "europe-west1"
}
},
"storage": {
"rules": "storage.rules"
},
"emulators": {
"auth": {
"port": 9099
},
"firestore": {
"port": 8080
},
"hosting": {
"port": 5000
},
"storage": {
"port": 9199
},
"ui": {
"enabled": true
},
"singleProjectMode": true
}
}
.firebaserc
{
"projects": {
"default": "mySite-31783"
},
"targets": {
"mySite-31783": {
"hosting": {
"mySite": [
"mySite-31783"
]
}
}
}
}
package.json
{
"name": "mySite",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"watch": "ng build --watch --configuration development",
"test": "ng test"
},
"private": true,
"dependencies": {
"@angular/animations": "^16.2.0",
"@angular/cdk": "^16.2.7",
"@angular/common": "^16.2.0",
"@angular/compiler": "^16.2.0",
"@angular/core": "^16.2.0",
"@angular/fire": "^7.6.1",
"@angular/flex-layout": "^15.0.0-beta.42",
"@angular/forms": "^16.2.0",
"@angular/material": "^16.2.7",
"@angular/platform-browser": "^16.2.0",
"@angular/platform-browser-dynamic": "^16.2.0",
"@angular/router": "^16.2.0",
"firebase": "^10.5.0",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
"zone.js": "~0.13.0"
},
"devDependencies": {
"@angular-devkit/build-angular": "^16.2.5",
"@angular/cli": "^16.2.5",
"@angular/compiler-cli": "^16.2.0",
"@types/jasmine": "~4.3.0",
"jasmine-core": "~4.6.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0",
"karma-coverage": "~2.2.0",
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "~2.1.0",
"typescript": "~5.1.3"
}
}
经过更多故障排除后,我发现了问题。
结果,我的
firebase.json
是用错误的参数生成的。
将构建“源”位置的名为“public”的参数添加到托管部分,因此无法找到应用程序代码。
这是正确的托管配置:
"hosting": {
"public": "dist",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"frameworksBackend": {
"region": "europe-west1"
}
}