javascript - Angular CLI og Angular Universal får ikke environment.production til å være true på serveren med --prod
Jeg satte opp webappen min ved bruk av Universal Starter - her og prøver å bruke environment.production for å bytte mellom en produksjonskonfigurasjon og en utviklingskonfigurasjon inne i ./src/config/server.config.ts, men verdien er alltid false. Når jeg sjekker verdien inne i en late loadet rute, er verdien korrekt. Hva skal jeg gjøre for å få den til å være korrekt på serversiden?
all hjelp blir satt pris på. takk
Svar #1
Jeg tror du vil ha noe med hvordan du konfigurerer webpack og oppretter miljøet ditt i npm-skript. Du kan sette miljøet basert på webpack-konfigurasjonen din. Ved å bruke webpack-merge kan du ha flere konfigurasjonspakker, og ved å sette opp hver enkelt med verdiene du har definert, kan du bytte frem og tilbake med webpack-merge i npm-skriptene dine. Se linken nedenfor.
https://webpack.js.org/guides/production/
Svar #2
Jeg tror grunnen er at i webpack.server.config.js er modus satt til 'none', ikke å gjøre det gir en feil når man bygger ssr, så miljøet er ikke satt til 'production'.
Løsningen jeg implementerer for nå er å sette en ny konfigurasjon med fileReplacements i serverbygget (angular.json):
"server": {
"builder": "@angular-devkit/build-angular:server",
"options": {
"outputPath": "dist/server",
"main": "src/main.server.ts",
"tsConfig": "src/tsconfig.server.json"
},
"configurations": {
"mynewconfig": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
]
}
Deretter legger jeg til den konfigurasjonen i package.json når jeg bygger ssr:
"build:client-and-server-bundles": "ng build --prod && ng run my-app:server --configuration=mynewconfig",
Dette er for Angular > 6, for tidligere versjoner kan du bruke --env-flagget i stedet for --configuration.
