﻿1
00:00:00,890 --> 00:00:02,400
‫Docente: Salve.

2
00:00:02,400 --> 00:00:06,663
‫Rendiamo ora alcune belle pagine di errore ai nostri utenti.

3
00:00:08,210 --> 00:00:11,723
‫E quindi, per iniziare, creiamo prima un errore.

4
00:00:13,100 --> 00:00:15,033
‫Quindi apriamo questo tour qui.

5
00:00:16,350 --> 00:00:18,293
‫No, non voglio tradurre.

6
00:00:19,440 --> 00:00:23,640
‫E ora aggiungiamo semplicemente qualcosa a questo registro qui, in

7
00:00:23,640 --> 00:00:26,563
‫modo che, ovviamente, non venga trovato.

8
00:00:27,800 --> 00:00:31,140
‫Giusto, quindi ecco come appare un errore a

9
00:00:31,140 --> 00:00:32,330
‫questo punto.

10
00:00:32,330 --> 00:00:34,510
‫Quindi, semplicemente, tutto questo

11
00:00:34,510 --> 00:00:37,440
‫JSON qui, proprio come sembrerebbe in Postman.

12
00:00:37,440 --> 00:00:40,110
‫Quindi abbiamo già visto questo tipo di errore qui.

13
00:00:40,110 --> 00:00:42,740
‫E quindi, ora risolviamolo.

14
00:00:42,740 --> 00:00:46,230
‫Ma prima dobbiamo effettivamente correggere questo particolare errore.

15
00:00:46,230 --> 00:00:48,150
‫Quindi in questo momento

16
00:00:48,150 --> 00:00:53,150
‫otteniamo, non possiamo leggere il nome della proprietà di null in getTour.

17
00:00:53,530 --> 00:00:54,600
‫Bene.

18
00:00:54,600 --> 00:00:59,530
‫E quindi questo è qui nel nostro controller di visualizzazioni, getTour.

19
00:00:59,530 --> 00:01:02,120
‫E quindi qui, non abbiamo alcuna gestione degli

20
00:01:02,120 --> 00:01:05,260
‫errori nel caso in cui non ci sia un tour, giusto?

21
00:01:05,260 --> 00:01:08,060
‫Quindi lo abbiamo in tutti gli altri nostri gestori di

22
00:01:08,060 --> 00:01:10,470
‫rotte, ma in questo non ce l'abbiamo ancora.

23
00:01:10,470 --> 00:01:11,513
‫Quindi aggiungiamolo.

24
00:01:12,570 --> 00:01:17,570
‫Quindi, se non c'è un tour, torna e vai

25
00:01:18,910 --> 00:01:23,910
‫al middleware successivo con un nuovo errore dell'app.

26
00:01:25,020 --> 00:01:28,090
‫E probabilmente non è ancora qui.

27
00:01:28,090 --> 00:01:29,483
‫E no infatti, non lo è.

28
00:01:31,290 --> 00:01:32,123
‫Quindi cost.

29
00:01:34,904 --> 00:01:36,363
‫AppError è uguale a.

30
00:01:44,880 --> 00:01:46,220
‫Bene.

31
00:01:46,220 --> 00:01:48,280
‫Errore qui ovviamente.

32
00:01:48,280 --> 00:01:49,480
‫E poi diciamo che

33
00:01:53,720 --> 00:01:55,633
‫non c'è nessun tour con quel nome.

34
00:01:57,420 --> 00:02:01,090
‫E poi è un 404 per non trovato.

35
00:02:01,090 --> 00:02:02,400
‫Bene?

36
00:02:02,400 --> 00:02:04,300
‫Quindi proviamo di nuovo.

37
00:02:04,300 --> 00:02:07,690
‫E così ora dovremmo ottenere un errore molto più carino.

38
00:02:07,690 --> 00:02:09,490
‫E infatti, ne otteniamo uno.

39
00:02:09,490 --> 00:02:11,135
‫Quindi 404.

40
00:02:11,135 --> 00:02:14,800
‫E tieni presente che questo ora è un errore operativo.

41
00:02:14,800 --> 00:02:18,570
‫Quindi un errore che sappiamo di aver creato noi stessi fondamentalmente.

42
00:02:18,570 --> 00:02:21,910
‫E quindi, proprio come prima, sarà importante per la nostra

43
00:02:21,910 --> 00:02:23,870
‫strategia di gestione degli errori.

44
00:02:23,870 --> 00:02:27,240
‫Quindi, parliamone davvero.

45
00:02:27,240 --> 00:02:30,010
‫E quindi qui abbiamo finito.

46
00:02:30,010 --> 00:02:32,283
‫E ora nel nostro controller

47
00:02:33,500 --> 00:02:37,130
‫degli errori, abbiamo, ricordiamo, due funzioni che rimandano

48
00:02:37,130 --> 00:02:39,070
‫gli errori al client.

49
00:02:39,070 --> 00:02:41,280
‫Quindi abbiamo questo qui per lo sviluppo

50
00:02:41,280 --> 00:02:43,370
‫e questo per la produzione.

51
00:02:43,370 --> 00:02:45,650
‫Quindi, in produzione,

52
00:02:45,650 --> 00:02:49,730
‫distinguiamo tra errori operativi e altri errori sconosciuti.

53
00:02:49,730 --> 00:02:50,563
‫Destra?

54
00:02:50,563 --> 00:02:53,190
‫E quindi è proprio quello di cui abbiamo appena parlato prima.

55
00:02:53,190 --> 00:02:54,690
‫Quindi, per gli errori che

56
00:02:54,690 --> 00:02:57,470
‫conosciamo, inviamo il messaggio di errore reale perché possiamo

57
00:02:57,470 --> 00:02:59,780
‫essere sicuri che non sarà un errore

58
00:02:59,780 --> 00:03:01,130
‫dall'aspetto strano proveniente

59
00:03:01,130 --> 00:03:03,520
‫da qualche parte da express o note

60
00:03:03,520 --> 00:03:04,910
‫o qualcosa del genere.

61
00:03:04,910 --> 00:03:08,180
‫Mentre, d'altra parte, quando si tratta di un errore sconosciuto,

62
00:03:08,180 --> 00:03:11,410
‫beh, allora non vogliamo far trapelare i dettagli dell'errore.

63
00:03:11,410 --> 00:03:13,880
‫E quindi ora in questo caso, con

64
00:03:13,880 --> 00:03:16,433
‫il sito Web renderizzato, utilizzeremo effettivamente la stessa strategia.

65
00:03:17,460 --> 00:03:18,950
‫Ora, quello che farò

66
00:03:18,950 --> 00:03:21,960
‫è semplicemente aggiungere il rendering di una pagina di

67
00:03:21,960 --> 00:03:23,900
‫errore a ciascuna di queste funzioni.

68
00:03:23,900 --> 00:03:26,450
‫E fondamentalmente, quello che farò

69
00:03:26,450 --> 00:03:29,750
‫è verificare se l'URL inizia con l'API slash.

70
00:03:29,750 --> 00:03:33,930
‫E quindi in tal caso, inviamo questo tipo di errore, giusto.

71
00:03:33,930 --> 00:03:38,500
‫Ma se l'URL non inizia con l'API, beh in quel caso, significa

72
00:03:38,500 --> 00:03:41,340
‫che vogliamo rendere una pagina di errore

73
00:03:41,340 --> 00:03:44,030
‫come un sito web renderizzato, ok?

74
00:03:44,030 --> 00:03:46,823
‫Proprio come abbiamo fatto in questa sezione.

75
00:03:47,920 --> 00:03:50,520
‫Ad ogni modo, ora implementiamolo.

76
00:03:50,520 --> 00:03:55,520
‫Quindi, possiamo usare l'URL originale request dot.

77
00:03:55,570 --> 00:03:58,133
‫E probabilmente l'abbiamo usato prima.

78
00:04:00,000 --> 00:04:00,840
‫Bene?

79
00:04:00,840 --> 00:04:04,690
‫Quindi l'URL originale è fondamentalmente l'intero URL ma

80
00:04:04,690 --> 00:04:06,180
‫non con l'host.

81
00:04:06,180 --> 00:04:08,990
‫Così sembra, esattamente come il percorso.

82
00:04:08,990 --> 00:04:12,050
‫E così di nuovo, quando raggiungiamo il

83
00:04:12,050 --> 00:04:15,640
‫nostro URL, beh, allora quel percorso inizia con l'API slash.

84
00:04:15,640 --> 00:04:17,440
‫E così ora possiamo testarlo.

85
00:04:17,440 --> 00:04:20,710
‫Quindi possiamo usare una funzione JavaScript chiamata startWith.

86
00:04:24,310 --> 00:04:26,873
‫Quindi una funzione disponibile per le stringhe.

87
00:04:27,860 --> 00:04:30,973
‫E poi prova se inizia con l'API slash.

88
00:04:32,530 --> 00:04:33,363
‫Destra?

89
00:04:33,363 --> 00:04:36,853
‫E quindi se lo fa, allora questo è ciò che vogliamo fare.

90
00:04:38,630 --> 00:04:41,163
‫Quindi invia semplicemente l'errore come JSON.

91
00:04:42,570 --> 00:04:46,943
‫Ma in caso contrario, allora in realtà vogliamo rendere un errore.

92
00:04:49,320 --> 00:04:52,103
‫Quindi è ancora res. stato.

93
00:04:54,530 --> 00:04:56,177
‫E anche a statusCode.

94
00:04:56,177 --> 00:04:59,483
‫Ma qui dentro è effettivamente renderizzato.

95
00:05:00,430 --> 00:05:02,480
‫Quindi otteniamo il nome del modello

96
00:05:02,480 --> 00:05:05,290
‫e creeremo questo modello in un secondo,

97
00:05:05,290 --> 00:05:07,263
‫ma si chiamerà errore.

98
00:05:08,230 --> 00:05:10,810
‫E poi i dati che vogliamo inviare lì

99
00:05:10,810 --> 00:05:12,970
‫per ora sono solo il titolo.

100
00:05:12,970 --> 00:05:14,430
‫E aggiungerò altre cose una

101
00:05:14,430 --> 00:05:16,223
‫volta che il modello sarà effettivamente terminato.

102
00:05:18,350 --> 00:05:22,900
‫Quindi qualcosa è andato storto sarà il titolo di

103
00:05:22,900 --> 00:05:25,323
‫questa pagina di errore.

104
00:05:26,490 --> 00:05:27,750
‫Bene?

105
00:05:27,750 --> 00:05:29,570
‫Oh, in realtà non

106
00:05:29,570 --> 00:05:31,630
‫abbiamo accesso alla variabile request qui.

107
00:05:31,630 --> 00:05:33,480
‫E la sua funzione.

108
00:05:33,480 --> 00:05:35,173
‫E quindi aggiungiamolo.

109
00:05:36,790 --> 00:05:38,160
‫Richiedi qui.

110
00:05:38,160 --> 00:05:40,270
‫E ne avremo bisogno anche qui.

111
00:05:40,270 --> 00:05:41,103
‫Questo.

112
00:05:42,790 --> 00:05:45,010
‫E quindi aggiungiamolo anche qui.

113
00:05:45,010 --> 00:05:47,193
‫Quindi proprio qui.

114
00:05:53,723 --> 00:05:54,853
‫Bene.

115
00:05:55,690 --> 00:05:59,180
‫Quindi, ora abbiamo effettivamente bisogno di creare questa pagina,

116
00:05:59,180 --> 00:06:01,400
‫o questo modello, chiamato errore.

117
00:06:01,400 --> 00:06:04,683
‫E ancora una volta, ho già un semplice modello per questo.

118
00:06:06,110 --> 00:06:11,030
‫Quindi è in dev-data, templates ed errorTemplate.

119
00:06:12,830 --> 00:06:14,110
‫Bene?

120
00:06:14,110 --> 00:06:15,513
‫Quindi copiamo questo.

121
00:06:17,370 --> 00:06:19,493
‫E poi crea una vista per quello.

122
00:06:21,190 --> 00:06:22,253
‫errore. carlino.

123
00:06:24,010 --> 00:06:24,843
‫Bene.

124
00:06:24,843 --> 00:06:28,080
‫E quindi qui abbiamo un semplice h2 che dice, uh

125
00:06:28,080 --> 00:06:29,800
‫oh, qualcosa è andato storto.

126
00:06:29,800 --> 00:06:32,540
‫Poi (ride) ci sono degli emoji divertenti.

127
00:06:32,540 --> 00:06:34,100
‫Non sono molto divertenti.

128
00:06:34,100 --> 00:06:38,400
‫E poi ecco che vogliamo poter passare anche in un messaggio.

129
00:06:38,400 --> 00:06:39,750
‫Bene?

130
00:06:39,750 --> 00:06:44,750
‫Quindi aggiungiamo questo uguale a msg, solo una scorciatoia per messaggio.

131
00:06:46,320 --> 00:06:47,530
‫Bene?

132
00:06:47,530 --> 00:06:48,963
‫Ed è proprio così.

133
00:06:49,940 --> 00:06:54,940
‫Quindi chiudiamolo e trasmettiamo quel messaggio.

134
00:06:55,810 --> 00:06:58,640
‫Quindi msg è quindi impostato.

135
00:06:58,640 --> 00:07:02,403
‫E impostiamolo davvero sul messaggio di errore.

136
00:07:03,700 --> 00:07:04,533
‫Bene?

137
00:07:04,533 --> 00:07:07,260
‫E lo stiamo facendo qui perché siamo in fase di sviluppo.

138
00:07:07,260 --> 00:07:08,423
‫Quindi tienilo a mente.

139
00:07:09,760 --> 00:07:11,460
‫Aggiungiamo anche alcuni commenti qui.

140
00:07:13,402 --> 00:07:14,235
‫API.

141
00:07:18,360 --> 00:07:19,593
‫Mettiamolo qui.

142
00:07:24,740 --> 00:07:26,570
‫Il sito web reso.

143
00:07:26,570 --> 00:07:29,890
‫Quindi lo stiamo facendo in questo modo, con un messaggio

144
00:07:29,890 --> 00:07:31,530
‫di errore, di nuovo

145
00:07:31,530 --> 00:07:34,970
‫perché in fase di sviluppo non importa se trapeliamo tutti i

146
00:07:34,970 --> 00:07:36,660
‫dettagli dell'errore sulla nostra pagina, giusto?

147
00:07:36,660 --> 00:07:39,920
‫Perché nessuno lo vedrà davvero dal momento che, sì, siamo

148
00:07:39,920 --> 00:07:41,310
‫in fase di sviluppo.

149
00:07:41,310 --> 00:07:44,323
‫Quindi dovrebbe funzionare ora.

150
00:07:45,330 --> 00:07:48,793
‫Quindi tutto ciò che dovremmo fare ora è ricaricare questa pagina.

151
00:07:51,950 --> 00:07:54,030
‫Ma ora qui c'è qualcosa che non va.

152
00:07:54,030 --> 00:07:57,470
‫Quindi dice che non ha inviato alcun dato.

153
00:07:57,470 --> 00:07:58,633
‫Quindi torniamo qui.

154
00:07:59,470 --> 00:08:01,713
‫Bene, come primo problema che vedo

155
00:08:02,650 --> 00:08:06,620
‫qui, dovrei avere il codice di stato e non solo lo stato.

156
00:08:06,620 --> 00:08:08,870
‫Questo è tutto per verificare se abbiamo qualche errore qui.

157
00:08:08,870 --> 00:08:09,910
‫O si.

158
00:08:09,910 --> 00:08:11,413
‫In realtà ci sono errori.

159
00:08:12,770 --> 00:08:16,203
‫Quindi, in realtà era il codice di stato non valido.

160
00:08:17,770 --> 00:08:19,113
‫Quindi qui dovrebbe essere il codice.

161
00:08:20,170 --> 00:08:21,723
‫Diamo un altro salvataggio.

162
00:08:23,170 --> 00:08:24,590
‫Ricaricalo.

163
00:08:24,590 --> 00:08:28,000
‫E ora otteniamo qualche pagina di errore qui.

164
00:08:28,000 --> 00:08:29,830
‫Beh, non è davvero formattato.

165
00:08:29,830 --> 00:08:32,830
‫Tuttavia, ha il titolo e, cosa più

166
00:08:32,830 --> 00:08:36,180
‫importante, ha questo messaggio che abbiamo appena trasmesso.

167
00:08:36,180 --> 00:08:38,600
‫Quindi non c'è nessun tour con quel nome.

168
00:08:38,600 --> 00:08:43,600
‫E questo viene esattamente dal nostro controller di visualizzazioni.

169
00:08:43,760 --> 00:08:45,340
‫Quindi proprio da qui.

170
00:08:45,340 --> 00:08:48,720
‫Quindi ricorda quella logica in cui creiamo un errore qui che

171
00:08:48,720 --> 00:08:50,920
‫viene poi passato al nostro errore globale

172
00:08:50,920 --> 00:08:52,393
‫e al middleware Lint.

173
00:08:53,340 --> 00:08:54,173
‫Destra?

174
00:08:54,173 --> 00:08:56,760
‫E quindi è quello che raccoglierà

175
00:08:56,760 --> 00:08:59,700
‫questi errori e li invierà al cliente.

176
00:08:59,700 --> 00:09:02,300
‫Ora, nel nostro caso, riceviamo questo

177
00:09:02,300 --> 00:09:05,760
‫errore perché qui nel nostro modello abbiamo ancora

178
00:09:05,760 --> 00:09:07,770
‫dimenticato di fare qualcosa.

179
00:09:07,770 --> 00:09:11,660
‫Che è semplicemente estendere, ovviamente, il nostro modello principale.

180
00:09:11,660 --> 00:09:12,810
‫Destra?

181
00:09:12,810 --> 00:09:17,810
‫Quindi dobbiamo dire estendere al modello di base.

182
00:09:19,690 --> 00:09:22,323
‫E poi, come sempre, crea quel blocco qui.

183
00:09:23,300 --> 00:09:26,040
‫Quindi blocca il contenuto.

184
00:09:26,040 --> 00:09:29,200
‫E poi tutto questo deve essere lì dentro.

185
00:09:29,200 --> 00:09:31,080
‫E quindi fondamentalmente qui stiamo

186
00:09:31,080 --> 00:09:35,070
‫facendo esattamente la stessa cosa che abbiamo fatto in tutti gli altri modelli.

187
00:09:35,070 --> 00:09:37,430
‫Quindi fondamentalmente iniettando questo contenuto

188
00:09:37,430 --> 00:09:40,693
‫qui nel blog dei contenuti nel modello di base.

189
00:09:42,370 --> 00:09:47,370
‫Quindi, se lo ricarichiamo ora, finalmente sembrerà come previsto.

190
00:09:48,090 --> 00:09:48,923
‫Bene?

191
00:09:49,870 --> 00:09:53,670
‫E ora, se abbiamo effettivamente avuto qualche errore nel nostro

192
00:09:53,670 --> 00:09:56,290
‫codice, e quindi diciamo di nuovo

193
00:09:56,290 --> 00:09:59,210
‫che non abbiamo questa gestione degli errori

194
00:09:59,210 --> 00:10:02,713
‫qui, allora ovviamente l'intero errore è trapelato al client.

195
00:10:06,520 --> 00:10:09,410
‫Quindi non è possibile leggere il nome della proprietà di null.

196
00:10:09,410 --> 00:10:12,140
‫E, naturalmente, non vogliamo che i visitatori del nostro

197
00:10:12,140 --> 00:10:14,630
‫sito web ricevano questo tipo di errore, giusto?

198
00:10:14,630 --> 00:10:17,040
‫Nessuno capirebbe davvero cosa significa.

199
00:10:17,040 --> 00:10:20,520
‫E così nel nostro gestore degli errori di produzione,

200
00:10:20,520 --> 00:10:22,570
‫ora ce ne occupiamo noi.

201
00:10:22,570 --> 00:10:25,300
‫Quindi quaggiù nel nostro controller di

202
00:10:25,300 --> 00:10:28,770
‫errore, ora applichiamo la stessa logica che abbiamo qui.

203
00:10:28,770 --> 00:10:32,840
‫Quindi testiamo se stiamo attualmente gestendo l'API o meno.

204
00:10:32,840 --> 00:10:35,370
‫E naturalmente potrebbero esserci modi più eleganti

205
00:10:35,370 --> 00:10:36,380
‫per farlo.

206
00:10:36,380 --> 00:10:38,820
‫Ad esempio, potresti avere un middleware di

207
00:10:38,820 --> 00:10:41,450
‫gestione degli errori completamente separato solo per l'API

208
00:10:41,450 --> 00:10:44,020
‫e uno per il sito Web renderizzato, giusto?

209
00:10:44,020 --> 00:10:47,763
‫Ma ancora una volta, voglio solo mantenerlo un po' semplice qui.

210
00:10:49,160 --> 00:10:49,993
‫Bene?

211
00:10:49,993 --> 00:10:52,283
‫Quindi, in questo caso, questo è davvero il mio obiettivo principale.

212
00:10:53,570 --> 00:10:54,600
‫Bene.

213
00:10:54,600 --> 00:10:56,750
‫Selezioniamo tutto questo.

214
00:10:56,750 --> 00:10:57,950
‫Oh, cosa è successo lì?

215
00:11:04,880 --> 00:11:05,783
‫Ah, ci siamo.

216
00:11:07,628 --> 00:11:08,461
‫Bene.

217
00:11:08,461 --> 00:11:09,773
‫Quindi questo è per l'API.

218
00:11:12,490 --> 00:11:15,140
‫E ora avremo effettivamente qualcosa di molto simile.

219
00:11:25,280 --> 00:11:27,883
‫Quindi questo è, di nuovo, per il sito web renderizzato.

220
00:11:30,950 --> 00:11:35,950
‫Chiamiamolo B qui e A per questo.

221
00:11:36,380 --> 00:11:38,790
‫Quindi, solo per separarlo un po' meglio.

222
00:11:38,790 --> 00:11:40,873
‫Quindi abbiamo e poi B quaggiù.

223
00:11:42,600 --> 00:11:45,513
‫Comunque, questo sarà un po' simile a questo.

224
00:11:46,700 --> 00:11:51,433
‫Quindi, se abbiamo un errore operativo, in pratica la

225
00:11:52,940 --> 00:11:54,470
‫pagina di

226
00:11:54,470 --> 00:11:57,470
‫errore dovrebbe apparire come prima.

227
00:11:57,470 --> 00:12:01,640
‫Ma nel caso si tratti di un errore di

228
00:12:01,640 --> 00:12:05,950
‫programmazione o sconosciuto, allora non vogliamo il messaggio completo, ma

229
00:12:05,950 --> 00:12:08,640
‫solo un messaggio molto generico.

230
00:12:08,640 --> 00:12:13,640
‫Quindi qualcosa come per favore riprova più tardi.

231
00:12:14,490 --> 00:12:15,660
‫Bene?

232
00:12:15,660 --> 00:12:18,770
‫Ora vediamo che tipo di errore otteniamo qui.

233
00:12:18,770 --> 00:12:21,350
‫E a quanto pare, otteniamo qualcosa chiamato

234
00:12:21,350 --> 00:12:23,380
‫una dichiarazione if solitaria qui.

235
00:12:23,380 --> 00:12:24,213
‫Destra.

236
00:12:24,213 --> 00:12:25,900
‫Quindi sì, Lint non vuole

237
00:12:25,900 --> 00:12:29,000
‫che abbiamo solo un if all'interno di un blocco else.

238
00:12:29,000 --> 00:12:31,580
‫E sono d'accordo che non

239
00:12:31,580 --> 00:12:34,280
‫è una bella pratica di programmazione.

240
00:12:34,280 --> 00:12:36,280
‫E quindi, in effetti, risolviamo il

241
00:12:37,500 --> 00:12:39,483
‫problema sbarazzandoci di quest'altro qui.

242
00:12:41,600 --> 00:12:42,740
‫Dagli un salvataggio.

243
00:12:42,740 --> 00:12:44,540
‫E poi quell'errore è sparito.

244
00:12:44,540 --> 00:12:47,530
‫Ma ora dobbiamo assicurarci che questo qui termini

245
00:12:47,530 --> 00:12:50,230
‫davvero il ciclo di risposta alla richiesta.

246
00:12:50,230 --> 00:12:54,843
‫E quindi dobbiamo tornare qui e anche qui.

247
00:12:56,240 --> 00:12:57,580
‫Bene.

248
00:12:57,580 --> 00:13:02,150
‫Ora, un altro errore ESLint, altro non necessario dopo un ritorno.

249
00:13:02,150 --> 00:13:04,090
‫E infatti, anche questo è vero.

250
00:13:04,090 --> 00:13:05,760
‫E in realtà ho seguito questa

251
00:13:05,760 --> 00:13:08,330
‫regola durante tutto il corso perché mi piace come

252
00:13:08,330 --> 00:13:09,453
‫pratica di programmazione.

253
00:13:10,360 --> 00:13:13,723
‫E quindi, sì, allora liberiamoci di quest'altro.

254
00:13:15,000 --> 00:13:18,080
‫Credo davvero, e ci credo da molto tempo, che

255
00:13:18,080 --> 00:13:22,050
‫sia molto più bello senza queste affermazioni if else, ma invece

256
00:13:22,050 --> 00:13:25,660
‫solo con un if, come questo qui, e poi includi

257
00:13:25,660 --> 00:13:28,253
‫l'altro al di fuori di quello.

258
00:13:29,240 --> 00:13:31,300
‫Ok, questo è quello che abbiamo qui adesso.

259
00:13:31,300 --> 00:13:33,373
‫Mettiamo anche A e B qui.

260
00:13:34,240 --> 00:13:35,073
‫B.

261
00:13:36,020 --> 00:13:38,613
‫E infatti, facciamo la stessa identica cosa qui.

262
00:13:39,930 --> 00:13:41,033
‫Quindi torna.

263
00:13:44,820 --> 00:13:46,513
‫Restituisci anche questo.

264
00:13:52,160 --> 00:13:53,653
‫Poi qui, anche A e B.

265
00:13:57,150 --> 00:14:00,540
‫Quindi, in effetti, mi sembra più pulito.

266
00:14:00,540 --> 00:14:02,450
‫Ora abbiamo A qui e A qui

267
00:14:02,450 --> 00:14:04,733
‫di nuovo, ma, beh, non importa a questo punto.

268
00:14:05,570 --> 00:14:06,403
‫Bene.

269
00:14:07,320 --> 00:14:08,993
‫Quindi torna qui.

270
00:14:11,260 --> 00:14:12,190
‫Torna qui.

271
00:14:12,190 --> 00:14:15,863
‫E prima che mi urli contro, rimuoviamo questo.

272
00:14:17,630 --> 00:14:19,773
‫E così è di nuovo meglio.

273
00:14:23,120 --> 00:14:24,833
‫Quindi mettilo qui.

274
00:14:25,770 --> 00:14:28,950
‫E dovrebbe essere così.

275
00:14:28,950 --> 00:14:29,840
‫Bene?

276
00:14:29,840 --> 00:14:31,950
‫Facciamo solo per

277
00:14:31,950 --> 00:14:35,660
‫completezza di copiare questo commento anche qui.

278
00:14:35,660 --> 00:14:39,333
‫E poi chiamalo di nuovo B.

279
00:14:41,160 --> 00:14:42,520
‫Bene.

280
00:14:42,520 --> 00:14:43,353
‫Perfetto.

281
00:14:44,720 --> 00:14:46,910
‫In realtà copiamo anche questo qui

282
00:14:46,910 --> 00:14:48,603
‫nella funzione di sviluppo.

283
00:14:49,770 --> 00:14:52,500
‫Perché in questo momento, una volta restituito

284
00:14:52,500 --> 00:14:55,723
‫l'errore, non abbiamo davvero modo di vedere l'errore completo.

285
00:14:58,460 --> 00:15:02,930
‫Va bene, quindi, sbarazzati di questo per renderlo più visibile.

286
00:15:02,930 --> 00:15:04,483
‫E adesso è bellissimo.

287
00:15:05,740 --> 00:15:06,900
‫Bene.

288
00:15:06,900 --> 00:15:08,800
‫Quindi ora chiudiamolo qui

289
00:15:08,800 --> 00:15:12,300
‫in modo da poter avviare la nostra applicazione di produzione.

290
00:15:12,300 --> 00:15:15,670
‫Quindi fondamentalmente lo eseguo ora in produzione.

291
00:15:15,670 --> 00:15:18,500
‫E abbiamo uno script per

292
00:15:19,800 --> 00:15:23,970
‫quello che si chiama npm run start production.

293
00:15:27,220 --> 00:15:28,560
‫Bene?

294
00:15:28,560 --> 00:15:31,100
‫Quindi, se lo testiamo ora,

295
00:15:31,100 --> 00:15:34,430
‫non dovremmo più vedere questa stringa qui, ricordi?

296
00:15:34,430 --> 00:15:37,090
‫Perché a questo punto, non abbiamo alcuna gestione degli errori

297
00:15:37,090 --> 00:15:39,610
‫per un nome di tour non valido come questo.

298
00:15:39,610 --> 00:15:40,637
‫Bene?

299
00:15:40,637 --> 00:15:41,470
‫Destra?

300
00:15:41,470 --> 00:15:42,303
‫Dato che siamo

301
00:15:42,303 --> 00:15:44,220
‫in produzione e non si tratta di

302
00:15:44,220 --> 00:15:46,127
‫un errore operativo, beh, non vogliamo vederlo.

303
00:15:46,127 --> 00:15:49,400
‫E quindi è quello che abbiamo appena codificato prima.

304
00:15:49,400 --> 00:15:53,030
‫E quindi, in effetti, questo è il messaggio di errore più generico.

305
00:15:53,030 --> 00:15:54,070
‫Destra?

306
00:15:54,070 --> 00:15:59,070
‫Ma se poi lo rimettiamo qui nel controller delle viste, quindi

307
00:16:00,800 --> 00:16:03,170
‫se reinseriamo questa gestione degli

308
00:16:03,170 --> 00:16:06,150
‫errori, allora ovviamente, poiché questo qui sarà

309
00:16:06,150 --> 00:16:09,830
‫ora un errore operativo, allora otterremo ovviamente quella

310
00:16:09,830 --> 00:16:11,460
‫stringa di errore.

311
00:16:11,460 --> 00:16:12,930
‫Perché è sempre

312
00:16:12,930 --> 00:16:15,400
‫bello mostrare un messaggio amichevole all'utente.

313
00:16:15,400 --> 00:16:18,453
‫Ma come hai visto, in realtà non è successo.

314
00:16:19,540 --> 00:16:22,383
‫Allora perché?

315
00:16:25,140 --> 00:16:28,450
‫Bene, siamo nell'errore di produzione.

316
00:16:28,450 --> 00:16:31,070
‫Siamo al sito renderizzato.

317
00:16:31,070 --> 00:16:34,290
‫E infatti, abbiamo un errore operativo.

318
00:16:34,290 --> 00:16:35,483
‫E così ...

319
00:16:39,010 --> 00:16:40,263
‫Abbiamo questo a posto.

320
00:16:41,200 --> 00:16:45,010
‫E quindi, in effetti, dovrebbe funzionare come ci aspettavamo.

321
00:16:45,010 --> 00:16:47,200
‫Bene, proviamo a registrare sulla console il messaggio

322
00:16:48,540 --> 00:16:49,880
‫del punto di errore

323
00:16:51,740 --> 00:16:54,573
‫solo per vedere se a questo punto l'abbiamo effettivamente ottenuto.

324
00:16:56,140 --> 00:16:57,570
‫Bene.

325
00:16:57,570 --> 00:16:59,480
‫Ricarica questo ragazzo.

326
00:16:59,480 --> 00:17:01,853
‫E quindi c'è l'errore.

327
00:17:02,720 --> 00:17:05,170
‫Ma comunque, è molto strano.

328
00:17:05,170 --> 00:17:07,363
‫Quindi questo ha effettivamente registrato l'intero errore.

329
00:17:15,210 --> 00:17:16,120
‫Molto strano.

330
00:17:16,120 --> 00:17:20,560
‫Perché per qualche motivo, anche il messaggio non è lì.

331
00:17:20,560 --> 00:17:24,363
‫Quindi eseguiamolo di nuovo in fase di sviluppo.

332
00:17:25,968 --> 00:17:26,883
‫Quindi npm inizia.

333
00:17:30,120 --> 00:17:30,953
‫Bene.

334
00:17:31,940 --> 00:17:35,460
‫E qui, per qualche ragione, ottiene l'accesso a questo messaggio.

335
00:17:35,460 --> 00:17:38,110
‫Ciò significa che nel nostro controller delle viste,

336
00:17:38,110 --> 00:17:40,553
‫abbiamo effettivamente impostato correttamente quel messaggio.

337
00:17:44,410 --> 00:17:45,983
‫Eseguilo di nuovo in produzione.

338
00:17:48,080 --> 00:17:52,183
‫Quindi questo è il genere di cose che non ci piacciono, giusto?

339
00:17:54,370 --> 00:17:57,670
‫Quindi diamo un'occhiata a dove viene effettivamente creato il

340
00:17:57,670 --> 00:17:59,550
‫nostro errore di produzione.

341
00:17:59,550 --> 00:18:01,320
‫E questo è qui.

342
00:18:01,320 --> 00:18:04,720
‫Quindi questo oggetto errore che stiamo usando qui in

343
00:18:04,720 --> 00:18:08,020
‫produzione è una copia di questo errore, giusto?

344
00:18:08,020 --> 00:18:10,960
‫Quindi quello che sta entrando in questo middleware.

345
00:18:10,960 --> 00:18:15,960
‫E quindi diamo un'occhiata a entrambi nella

346
00:18:15,960 --> 00:18:17,083
‫console.

347
00:18:18,850 --> 00:18:20,803
‫Quindi messaggio di errore.

348
00:18:23,636 --> 00:18:26,303
‫E poi anche il messaggio di errore.

349
00:18:29,930 --> 00:18:31,203
‫Quindi fallo di nuovo.

350
00:18:34,070 --> 00:18:35,620
‫Bene.

351
00:18:35,620 --> 00:18:37,470
‫Quindi vediamo quell'errore, quindi

352
00:18:37,470 --> 00:18:40,590
‫quello che sta entrando direttamente nella nostra funzione

353
00:18:40,590 --> 00:18:42,630
‫middleware, ha davvero il messaggio.

354
00:18:42,630 --> 00:18:45,730
‫Ma poi quello che copiamo, quindi errore, per qualche

355
00:18:45,730 --> 00:18:47,380
‫motivo non lo fa.

356
00:18:47,380 --> 00:18:49,870
‫E quindi questo trucco che stiamo facendo

357
00:18:49,870 --> 00:18:53,160
‫qui, per qualche motivo non copia il messaggio con esso,

358
00:18:53,160 --> 00:18:54,130
‫va bene?

359
00:18:54,130 --> 00:18:57,930
‫E quindi facciamo una rapida soluzione a questo.

360
00:18:57,930 --> 00:19:02,930
‫E diciamo che il messaggio di punto di errore è uguale a messaggio di punto di errore.

361
00:19:07,100 --> 00:19:07,933
‫Bene?

362
00:19:07,933 --> 00:19:10,963
‫E quindi dovrebbe risolverlo, si spera.

363
00:19:13,210 --> 00:19:14,660
‫Va bene.

364
00:19:14,660 --> 00:19:15,653
‫Eccoci qui.

365
00:19:16,910 --> 00:19:17,743
‫Destra.

366
00:19:19,430 --> 00:19:22,930
‫Quindi ora vedi che sono davvero la stessa cosa.

367
00:19:22,930 --> 00:19:24,330
‫E quindi questo era il problema.

368
00:19:25,490 --> 00:19:26,330
‫Bene?

369
00:19:26,330 --> 00:19:28,010
‫Quindi senza questo, in

370
00:19:28,010 --> 00:19:30,543
‫realtà tutti gli errori non funzionerebbero correttamente.

371
00:19:31,610 --> 00:19:33,860
‫Quindi, se lo pubblichiamo qui e

372
00:19:33,860 --> 00:19:38,860
‫proviamo ad accedere, ad esempio, allora admin@natours. io.

373
00:19:47,490 --> 00:19:50,970
‫Quindi vedi, qui otteniamo anche un errore non definito.

374
00:19:50,970 --> 00:19:51,890
‫Bene.

375
00:19:51,890 --> 00:19:54,630
‫E questo è di nuovo perché siamo

376
00:19:54,630 --> 00:19:58,860
‫in produzione e il nostro oggetto errore non ha copiato correttamente il messaggio.

377
00:19:58,860 --> 00:20:01,400
‫Non sono sicuro del motivo per cui non

378
00:20:01,400 --> 00:20:03,780
‫l'ho catturato quando lo stavamo effettivamente implementando.

379
00:20:03,780 --> 00:20:07,253
‫Ma forse non l'ho testato in modo abbastanza approfondito.

380
00:20:08,240 --> 00:20:09,640
‫Bene?

381
00:20:09,640 --> 00:20:11,403
‫E comunque, se lo proviamo

382
00:20:12,470 --> 00:20:15,320
‫ora, ora otteniamo il messaggio di errore corretto che

383
00:20:15,320 --> 00:20:16,370
‫ci aspettiamo.

384
00:20:18,230 --> 00:20:19,300
‫Bene.

385
00:20:19,300 --> 00:20:20,133
‫Grande.

386
00:20:20,133 --> 00:20:21,360
‫Quindi è risolto.

387
00:20:21,360 --> 00:20:24,950
‫E questo conclude questo video.

388
00:20:24,950 --> 00:20:26,250
‫Quindi, in

389
00:20:26,250 --> 00:20:28,740
‫conclusione, ora abbiamo una strategia di

390
00:20:28,740 --> 00:20:33,740
‫gestione degli errori che funziona per lo sviluppo, come prima, e

391
00:20:34,050 --> 00:20:35,780
‫anche per la produzione.

392
00:20:35,780 --> 00:20:39,000
‫E poi in ognuno di essi, abbiamo fondamentalmente due rami.

393
00:20:39,000 --> 00:20:41,500
‫Uno invia il messaggio di errore per l'API,

394
00:20:41,500 --> 00:20:43,397
‫che è esattamente quello che avevamo

395
00:20:43,397 --> 00:20:46,640
‫prima, e ora abbiamo anche una specie di gestore per

396
00:20:46,640 --> 00:20:48,430
‫il sito Web renderizzato.

397
00:20:48,430 --> 00:20:52,220
‫E quindi in tal caso, rendiamo il nostro modello di errore.

398
00:20:52,220 --> 00:20:54,850
‫Quindi in produzione, distinguiamo anche

399
00:20:54,850 --> 00:20:57,620
‫tra sito Web renderizzato e API.

400
00:20:57,620 --> 00:20:59,270
‫E poi come

401
00:20:59,270 --> 00:21:01,700
‫prima, all'interno di ognuno di questi

402
00:21:01,700 --> 00:21:03,784
‫rami, distinguiamo poi anche tra gli

403
00:21:03,784 --> 00:21:06,293
‫errori di operazione e gli errori sconosciuti.

404
00:21:07,240 --> 00:21:09,140
‫Così operativo e sconosciuto.

405
00:21:09,140 --> 00:21:13,230
‫E poi interni resi, anch'essi operativi e sconosciuti.

406
00:21:13,230 --> 00:21:15,490
‫E così per il sito

407
00:21:15,490 --> 00:21:18,600
‫Web reso, se abbiamo un errore operativo, quindi affidabile,

408
00:21:18,600 --> 00:21:21,270
‫inviamo il nostro messaggio di errore attendibile.

409
00:21:21,270 --> 00:21:23,590
‫Ma nel caso in cui non

410
00:21:23,590 --> 00:21:25,150
‫ci fidiamo dell'errore,

411
00:21:25,150 --> 00:21:29,560
‫quindi quando non lo sappiamo, inviamo semplicemente questo messaggio generico all'utente.

412
00:21:29,560 --> 00:21:31,630
‫Quindi, fantastico.

413
00:21:31,630 --> 00:21:35,050
‫Smettiamola qui, torniamo allo sviluppo e

414
00:21:35,920 --> 00:21:38,350
‫concludiamo questa lezione.

415
00:21:38,350 --> 00:21:39,763
‫Allora ci vediamo al prossimo.

