inside _app.js
import Script from "next/script";
<Script
async
type="text/javascript"
src="//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js"
/>
What it look like on first render

What it look like after router changes

Put the scripts inside _document, this makes the same error.
Add the bellow script on your main layout.
Import useEffect and useRouter
import { useEffect } from "react";
import { useRouter } from "next/router";
Assign file path to scripts object.
let scriptRefArr = []
const { route } = useRouter()
useEffect(() => {
if (route) {
const scripts = ['/assets/libs/tiny-slider/min/tiny-slider.js', '/assets/libs/tobii/js/tobii.min.js', '/assets/libs/feather-icons/feather.min.js', '/assets/js/plugins.init.js', '/assets/js/app.js'];
for (let item of scripts) {
loadScript(item);
}
}
return () => {
if (scriptRefArr.length > 0) {
removeScript()
}
}
}, [route]);
const loadScript = (src) => {
const script = document.createElement('script');
script.src = src;
script.async = true;
if (!scriptRefArr.find(item => item.url === src)) {
document.body.appendChild(script);
scriptRefArr.push({ url: src, script })
}
}
const removeScript = () => {
scriptRefArr.forEach(item => {
if (document.body.contains(item.script)) {
document.body.removeChild(item.script);
}
})
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With