https://...cloudworkstations.dev/... atau https://ir-web.vercel.app/..., bukan domain produksi Anda https://snipgeek.com.
Ini bukan hanya mengganggu; ini adalah gejala dari masalah teknis yang lebih dalam yang dapat memecah basis komentar Anda dan merusak pengalaman pengguna. Kami baru-baru ini menghadapi masalah ini secara langsung. Ini adalah studi kasus transparan tentang penyebabnya, berbagai upaya perbaikan kami, dan solusi akhir yang pada akhirnya menyelesaikan masalah.
http://localhost:3000 atau https://...cloudworkstations.dev.https://ir-web.vercel.app.https://snipgeek.com.NODE_ENV ke Nama Domainprocess.env.NODE_ENVNODE_ENV adalah "production". Ini gagal. Kami dengan cepat menyadari bahwa pratinjau penerapan di Vercel juga berjalan dalam mode production, sehingga masalah tetap ada.
localhost, cloudworkstations.dev, atau vercel.app, tidak mungkin ia mendaftarkan URL yang salah.
Kami menerapkan ini langsung di dalam komponen PostComments.tsx dengan memeriksa window.location.hostname.
'use client';
// ...
const productionHostname = 'snipgeek.com'; // Domain produksi akhir
export function PostComments({ article }: PostCommentsProps) {
const [shouldLoad, setShouldLoad] = useState(false);
const commentsRef = useRef<HTMLDivElement>(null);
useEffect(() => {
// Observer untuk lazy-load
const observer = new IntersectionObserver(([entry]) => {
// Saat komponen masuk ke viewport...
if (entry.isIntersecting) {
// ...periksa apakah hostname adalah domain produksi.
if (window.location.hostname === productionHostname) {
setShouldLoad(true);
}
observer.disconnect(); // Berhenti mengamati setelah pemeriksaan.
}
});
if (commentsRef.current) observer.observe(commentsRef.current);
return () => observer.disconnect();
}, []);
if (!shouldLoad) {
// Tampilkan placeholder jika tidak di situs produksi
return (
<div ref={commentsRef} className="text-center ...">
<p>Komentar hanya tersedia di situs produksi (snipgeek.com).</p>
</div>
);
}
// Jika di situs produksi, render Disqus dengan URL yang benar
const canonicalUrl = `https://${productionHostname}/blog/${article.slug}`;
return (
<DiscussionEmbed
shortname={disqusShortname}
config={{ url: canonicalUrl, ... }}
/>
);
}
Pendekatan ini sangat spesifik: ia memeriksa di mana pengguna berada, bukan hanya mode aplikasi yang sedang berjalan.
snipgeek-com untuk produksi akhir.
Loading Conversation...