[FIXED] Richten Sie Facebook Pixel nur für die Produktion in ReactJS ein

Ausgabe

Ich verwende React als Frontend (und Rails als Backend).

Ich richte den Facebook Pixel Events Manager ein, um meine Facebook-Anzeigen auf meiner Website zu verfolgen.

Also habe ich dieses Skript zu meiner public/index.html hinzugefügt:

<!-- Facebook Pixel Code -->
<script>
  !function(f,b,e,v,n,t,s)
  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
  n.queue=[];t=b.createElement(e);t.async=!0;
  t.src=v;s=b.getElementsByTagName(e)[0];
  s.parentNode.insertBefore(t,s)}(window, document,'script',
  'https://connect.facebook.net/en_US/fbevents.js');
  fbq('init', 'MYID');
  fbq('track', 'PageView');
</script>
<noscript><img height="1" width="1" style="display:none"
  src="https://www.facebook.com/tr?id=MYID&ev=PageView&noscript=1"
/></noscript>
<!-- End Facebook Pixel Code -->

und in meinen React-Komponenten habe ich diese Callback-Funktion hinzugefügt, wenn auf eine Schaltfläche geklickt wird und ein Ereignis ausgelöst wird:

() => fbq('track', 'MyEvent');

Es scheint zu funktionieren, obwohl ich meine Pixel nur in der Produktion zum Auslösen benötige. process.env.NODE_ENVIch kann in nicht zugreifen public/index.html.

Was kann ich tun, damit dieser Code nur in der Produktion verwendet wird?

Lösung

Dank @Dvid Silva und @Russ Brown habe ich mich schließlich für die folgende Lösung entschieden: Erstellen Sie zwei separate index.html-Dateien: dev-index.htmlundprod-index.html

bei mir config/path.js:

module.exports = {
#[...]
  appHtml: process.env.NODE_ENV === 'production' ? resolveApp('public/prod-index.html') : resolveApp('public/dev-index.html'),
#[...]
};

Beide Indexdateien sind identisch, außer dass die Produktionsdatei das Facebook-Pixel in ihrem <head>Tag hat.


Beantwortet von –
Uj Corb


Antwort geprüft von –
David Marino (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like