Deployment to Google Cloud Run using Angular v17 Application Builder not working
- Ngôn ngữ chính
- TypeScript
- Star
- 7.8k
- Fork
- 2.2k
- Merge trung bình
- 22 giờ 28 phút
- Pull request đã merge (30 ngày)
- 6
Mô tả
### Version info
**Angular:**
17.2.2
**Firebase:**
13.3.1
**AngularFire:**
17.0.1
**Other (e.g. Ionic/Cordova, Node, browser, operating system):**
Node 20
### How to reproduce these conditions
Use `@angular/fire` with the new `@angular-devkit/build-angular:application`.
**Failing test unit, Stackblitz demonstrating the problem**
**Steps to set up and reproduce**
Start a new repo with the following configuration (I used Nx with `project.json`, but vanilla `angular.json` also works):
```json
// ...
"targets": {
"build": {
"executor": "@angular-devkit/build-angular:application",
"outputs": ["{options.outputPath}"],
"options": {
"outputPath": "dist/apps/app",
}
}
"deploy": {
"executor": "@angular/fire:deploy",
"configurations": {
"production": {
"buildTarget": "app:build:production",
"serveTarget": "app:build:production"
}
},
}
```
Then execute the target using `npx nx run app:build --configuration=production`. This creates the following structre:
```txt
dist/
|_ apps/
|_ app/
|_ browser/
|_ server/
|_ ...
|_ main.server.mjs
|_ server.mjs
```
But [this code to deploy to Cloud Run](https://github.com/angular/angularfire/blob/73b40da11f7f56884c86da9cbe1123f3d00bc866/src/schematics/deploy/actions.ts#L318) still uses the old `main.js`. Also, it is using the `outputPath` from the `build` target, but since that `outputPath` does not contain `browser` or `server`, the final path needs to have this folder added too.
The change can be something like this (I have not tested this):
```ts
const packageJson = getPackageJson(context, workspaceRoot, options, join(serverBuildOptions.outputPath, 'main.js'));
```
...to something like this:
```ts
const packageJson = getPackageJson(context, workspaceRoot, options, join(serverBuildOptions.outputPath, 'server', 'main.server.mjs'));
```
...and probably more than this.
**Sample data and security rules**
### Debug output
** Errors in the JavaScript console **
** Output from `firebase.database().enableLogging(true);` **
** Screenshots **
### Expected behavior
Upload to Cloud Run using Angular v17 `@angular-devkit/build-angular:application` should work.
### Actual behavior
Upload to Cloud Run fails for Angular v17 with `@angular-devkit/build-angular:application`.
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu bằng cách chạy `npx nx run app:build --configuration=production` và kiểm tra `src/schematics/deploy/actions.ts` quanh phần mã triển khai Cloud Run được liên kết trong issue. So sánh đầu ra `dist/.../browser` và `server` của Angular application builder với các đường dẫn được sử dụng để triển khai, sau đó xác minh rằng việc triển khai thành công với cấu hình này.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- angular, firebase, google-cloud, typescript
- Lĩnh vực
- build-system, cloud, devops
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100