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_ENV
Ich 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.html
undprod-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)