Estoy creando un sitio usando un SSG (11ty) y tengo problemas para agregar un archivo js externo a mi html. Intenté colocar mi etiqueta en algunos lugares diferentes dentro de mi html, pero recibo el siguiente error cada vez que reviso el registro de la consola:
' GET net::ERR_ABORTED 404 (No encontrado) '
En un archivo html regular, me vincularía a mi archivo js colocando la etiqueta del script en la parte inferior del cuerpo. Sin embargo, como estoy usando 11ty para crear plantillas en mis páginas, la parte inferior del cuerpo está en realidad en un archivo nunjucks (.njk) separado.
He intentado poner la etiqueta en la parte inferior del archivo html, pero cuando mi código se entrega con 11ty, la etiqueta aparece encima del pie de página heredado del archivo layout.njk. También intenté escribir la etiqueta del script en la parte inferior del cuerpo en el archivo .njk, pero en todos los casos obtengo el mismo error.
¿Alguien sabe por qué recibo este mensaje de error y cuál es el lugar correcto para incluir mi etiqueta?
Aquí está mi estructura de archivos:
src |-- _includes | |-- layout.njk |-- carousel.js |-- gallery.htmlEsta es la parte inferior del cuerpo de mi archivo de plantilla layout.njk:
<script src="carousel.js"></script> </body> </html>Este es el tema principal de mi archivo gallery.html:
--- layout: layout.njk title: The Gallery ---Esta es la parte inferior de mi archivo gallery.html:
</div> </div> <script src="carousel.js"></script>Este es mi archivo de configuración .eleventy.js:
module.exports = function (eleventyConfig) { eleventyConfig.addPassthroughCopy("./src/js"); eleventyConfig.addPassthroughCopy("src/img"); eleventyConfig.addPassthroughCopy("src/css"); return { dir: { input: "src", layouts: "_includes", }, }; };¡Gracias!
Creo que el problema no es con su etiqueta HTML <script> , sino con Eleventy que no copia el archivo js en su directorio _site .
En su configuración .eleventy.js , está copiando src/js en su carpeta de salida, pero su archivo carousel.js no está en una carpeta js . Puedes arreglar esto agregando
eleventyConfig.addPassthroughCopy("src/carousel.js") a su configuración, o colocando su archivo de carrusel en src/js y actualizando su etiqueta de script a
<script src="/js/carousel.js"></script>Cualquiera de estas soluciones debería funcionar.