Tengo algo de código JS puro y HTML y CSS en mi servidor localhost:8000. Instalé node.js y puedo usarlo sin problemas para probarlo en el terminal de código VS. Sin embargo, quiero integrar la mecánica de lectura de archivos de node.js en el código que estoy ejecutando en el servidor localhost:8000. Quiero poner este código node.js en mi página web en localhost:8000
const {readFileSync, promises: fsPromises} = require('fs'); function syncReadFile(filename) { const contents = readFileSync(filename, 'utf-8'); const arr = contents.split(/\r?\n/); console.log(arr); // 👉️ ['One', 'Two', 'Three', 'Four'] return arr; } syncReadFile('./locations.txt');He intentado copiarlo y pegarlo en el archivo js de la página web, sin embargo, cuando lo ejecuto, la consola dice
Uncaught ReferenceError: require is not defined at window.onload (index.js:23:46) index.js:23:46 es la línea donde const {readFileSync, promises: fsPromises} = require('fs'); es.
¿Cómo puedo solucionar esto?
Creo que necesitas una mejor comprensión de cómo funciona NodeJS:
Node.js® es un tiempo de ejecución de JavaScript basado en el motor de JavaScript V8 de Chrome.
Un tiempo de ejecución de JavaScript es (en este contexto) un programa que se ejecuta en una máquina, con herramientas para interactuar con esa máquina. En desarrollo, el contexto de esa máquina es el contexto de un Servidor .
Ahora, JavaScript encontró su uso en la etiqueta de secuencia de comandos HTML, esa es la forma más "vainilla" de ejecutar JS en su hogar, para lo que más se usa. En este contexto, JavaScript se ejecuta como un Cliente .
¿Qué hace que NodeJS sea diferente de ejecutar el mismo código en un archivo HTML que ya puede ejecutar sin instalar NodeJS? Es lo más simple que puede obtener después de "forzar" la ejecución de JavaScript en el backend, pero para que se use como un servidor web, hay algunas herramientas que deben ser portadas, convertidas o incluso creadas, algunas de estas herramientas, como el sistema de archivos (fs) son específicos de NodeJS.
¡Eso es todo! TLDR es que su código no funcionará porque se está ejecutando en el lugar equivocado. Puede arreglar eso de muchas maneras, como esta , pero tal vez pueda encontrar una mejor manera de entender cómo funciona NodeJS.
Los navegadores no pueden acceder a sistemas de archivos como ese. Nodefs no funcionará dentro del navegador
Los módulos de NodeJS solo funcionan en el lado del servidor, no puede usarlo en el lado del cliente (que también incluye la sintaxis require() ).
Si desea leer un archivo del servidor, es posible que desee usar un AJAX dirigido a la ruta que tiene un controlador para leer el archivo de destino, y luego el resultado del AJAX se maneja del lado del cliente con Vanilla JS.