Je construis un site Web avec Next.Js et j'ai essayé d'implémenter un fichier .js externe (Bootstrap.min.js & Popper.min.js) mais il ne s'affiche pas. Je ne sais pas quel est le problème!
Je l'ai implémenté comme ceci:
<p id="demo"></p>
<script>document.getElementById("demo").innerHTML = "Hello JavaScript";</script>
Cela me semble bien? que me manque-t-il, il ne projette pas comme il se doit!
Quand j'ai essayé un script à l'intérieur de la page, il affiche "Bonjour JavaScript" pendant très peu de temps puis il disparaît?
import Head from 'next/head';
//partials
import Nav from './nav'
const Layout = (props) => (
<div>
<Head>
<title>Site</title>
{/* Meta tags */}
<meta charset="utf-8"></meta>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"></meta>
{/* Standard page css */}
<link rel="stylesheet" type="text/css" href="/static/css/page.css"/>
{/* Bootstrap CSS */}
<link rel="stylesheet" href="/static/includes/bootstrap.min.css"/>
{/* jQuery first, then Popper.js, then Bootstrap JS */}
<script src="/static/includes/popper.min.js"></script>
<script type="text/javascript" src="/static/includes/bootstrap.min.js"></script>
</Head>
<Nav/>
{props.children}
</div>
);
export default Layout;
Comment résoudre ce problème?
Aidez-moi!
J'utilise: "suivant": "^ 8.0.3", "réagir": "^ 16.8.4", "react-dom": "^ 16.8.4"
3 Réponses :
Cela fonctionne comme prévu pour moi.
<script
dangerouslySetInnerHTML={{
__html: `
console.log('Console message');
`,
}}
/>
Cette approche est recommandée par un ingénieur Next.js ici: github.com/ vercel / next.js / issues / 8891 # issuecomment-536192888 Bonjour, il semble que vous deviez utiliser dangerouslySetInnerHTML ici car React échappe les caractères par défaut
Head . Head . Placez-le dans un fichier séparé et importez le script dans la balise Head Vous pouvez créer un fichier .js , qui contient votre code js brut, dans le dossier public , puis utiliser le script dans le Head code > tag. Je ne sais pas pourquoi nous devons faire cela, mais voici comment cela fonctionne dans Next.js
Donc, pour votre problème, cela fonctionnera:
public / js /myscript.js
import Head from 'next/head';
const Layout = (props) => (
<div>
<Head>
{/* import external javascript */}
<script type="text/javascript" src="..."></script>
<script type="text/javascript" src="/js/myscript.js"></script>
</Head>
<p id="demo"></p>
</div>
);
export default Layout;
Layout.js
document.getElementById("demo").innerHTML = "Hello JavaScript";
@GunnerFan était sur la bonne voie. NextJS recommande de placer ces fichiers dans le dossier public
Donc
import Head from "next/head";
// ... elsewhere in your code
<HEAD>
<script type="text/javascript" src="js/myscript.js"></script>
</HEAD>
Vous pouvez vous référer directement aux fichiers du dossier, par exemple: js /
Veillez à ne pas les nommer de la même manière que les fichiers du répertoire pages, c'est-à-dire
INCORRECT: pages / myscript.js & js / myscript.js
Réf: https://nextjs.org/docs/basic-features/static-file-serving
Bonjour, comment avez-vous résolu cela?