Utilizzo di Google Optimize in un inizializzatore di plugin JS

Ciao a tutti, ho un problema quando attivo v4_gtag per l’analisi al posto di v3_analytics: ho bisogno di GTag per Google Optimize, ma continuo a ricevere l’errore “gtag is not a function”.

Sto chiamando la funzione gtag all’interno di un file JS di plugin. Qualcuno può fornire maggiori dettagli sul motivo per cui non funziona?

Ecco un esempio di come ho scritto il codice. Grazie in anticipo

export default {
  name: 'common-init',
  after: 'inject-objects',
  initialize() {
    gtag('event', 'optimize.callback', {
      name: settings.optimize_js_experiment_id,
      callback: (variation) => {
       console.log(`Variation: ${variation}`)
      }
    })
  }
}

Dove è definita la tua funzione gtag?

Suppongo che sia definito come parte di Discourse quando abilito gtag dalle impostazioni.

Dovrai comunque importarlo, anche se è già definito altrove.

Quindi devo ancora aggiungere manualmente lo script di importazione di GTag da qualche parte?

Sembra che gtag sia definito a runtime nell’oggetto window, quindi non è necessario importarlo di nuovo, ma basta chiamarlo a runtime come window.gtag.
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/google-universal-analytics-v4.js

Sono riuscito a definire la funzione all’avvio e credo che Discourse la ridefinisca quando viene caricato, il che al momento funziona correttamente. Tuttavia, ora ho un altro problema: quando aggiungo il mio codice di tracciamento GA nel codice di tracciamento universale di GA, viene ancora incluso analytics.js, anche se sto utilizzando v4_gtag. È un comportamento previsto? Non creerà un problema di invio di eventi duplicati?