angular / angular/angularfire

Deployment to Google Cloud Run using Angular v17 Application Builder not working

Offen
#3,502 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
TypeScript
Sterne
7.8k
Forks
2.2k
Ø Merge
22 Std. 28 Min.
Gemergte PRs (30 T.)
6

Beschreibung

### 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`.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit der Ausführung von `npx nx run app:build --configuration=production` und untersuche `src/schematics/deploy/actions.ts` im Umfeld des im Issue verlinkten Cloud Run-Bereitstellungscodes. Vergleiche die `dist/.../browser`- und `server`-Ausgabe des Angular application builder mit den für die Bereitstellung verwendeten Pfaden und verifiziere anschließend, dass die Bereitstellung für diese Konfiguration erfolgreich ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
angular, firebase, google-cloud, typescript
Bereich
build-system, cloud, devops
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.