Quería hacer un sitio web que tome una entrada y, usando node.js para el backend, cree una carpeta usando mkdirSync(input.value) . Tengo el módulo fs instalado localmente y lo hice funcionar cuando solo uso javascript, pero cuando intento hacerlo desde un botón en una página web, no funciona. Esta es mi estructura de carpetas y archivos:
Este es el código en los archivos index.html y script.js :
const fs = require("fs") const btn = document.querySelector("#btn") const input = document.querySelector("#in") btn.addEventListener("click", () => { fs.mkdirSync(`./src/${input.value}`) }) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title> Document </title> </head> <body> <input type="text" id="in"> <input type="submit" id="btn"> <script src="script.js"></script> </body> </html>¿Es posible hacer esto en primer lugar? No puedo usar PHP ya que no podré usar un servidor para este proyecto. Si tienes CUALQUIER otra idea, por favor dímelo, podría ser de ayuda.
Estás malinterpretando cómo funciona un backend:
El backend NO es un script adjunto al documento HTML. Por lo tanto, su script.js no funcionará porque no es un código de backend, es un código de frontend.
Puede usar Express.js para hacer su backend.
Estás mezclando dos conceptos aquí que no van juntos. Intentaré explicar esto usando tu primer script:
const fs = require("fs"); Esta línea pertenece a un contexto de nodeJS y no tiene idea de qué navegadores, ventanas o documentos son. Incluso si supiera que aún no funcionaría porque los navegadores admiten la sintaxis de ESM, es decir, import pero no el requisito de require .
const btn = document.querySelector("#btn") const input = document.querySelector("#in") btn.addEventListener("click", () => { fs.mkdirSync(`./src/${input.value}`) }) Aquí estamos en un contexto de navegador. Los navegadores no saben nada sobre los sistemas de archivos, por lo que todo lo que pueden hacer es generar un error cuando se encuentran con algo como fs .
Necesitará algún tipo de arquitectura de servidor/cliente, me temo, incluso cuando es solo un pequeño servidor local.