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?