Contenido del curso
Contenido del curso
Facundo Nicolás García Martoni
Carlos Enrique Ramírez Flores
Josue Zafra
Jonathan Sánchez Luna
Oscar Adrián Martínez Cavazos
Rafael Steven Vera Moreno
Matias Gallegos
Cristian Alexander Salazar Atalaya
Juan Carlos Tellez
Ramiro Nicolas DAccorso Rosati
Romel Javier Gomez Herrera
Eddy Arellanes
Carlos Sebastian Gracia Yañez
Fides Gerardo Escalona Molina
Elias Caracas
Martin Munilla
Francisco Imanol Suarez
Carlos Dugarte
Jose Manuel Montaño Saenz
David Gustavo Lopez Figueroa
Didier Irias
Asis Melgarejo Lopez
Rodrigo Ramos Xochiteotzin
Joel Josué Rojas Quisbert
Oriol Fernando Palacios Durand
Juan Ignacio Contreras
Lizardo Reyes
Oscar Adolfo Méndez Muñoz
Julio Ugalde
Bruno Amadori
Abigail Perez
Ralph Ortega
Sergio Martínez Cuevas
Ariel Batista
Oscar Adolfo Méndez Muñoz
Jhonnathan Diaz
Salvador Ruiz Fernández
Fernando Carrión
José María Cuevas Ramírez
Luis Chavez
LEONARD CUENCA
Atentos, node-gyp requiere Python 2 para funcionar
También mac aplica con Python 2?
@carlosextra1 si, macOS tiene python 2 por defecto
Para los que están viendo este curso a mediados de 2021 (o más recientemente) deben tomar en cuenta que desde la fecha de lanzamiento del curso, node ya ha tenido bastantes actualizaciones por lo que puede que no te funcione al 100% lo visto en este video, con respecto a los módulos nativos de C++. Así que toca investigar un poco más de lo habitual p darle un vistazo a los comentarios de la misma comunidad ... o con algo de suerte, tal vez todo te funciona de maravilla desde el inicio.
De igual forma también es importante que sepas que el uso de módulos nativos de C++ es una práctica "no fundamental" al momento de desarrollar en node, sin embargo, es sugerible comprender este tema lo mejor posible por el plus de conocimiento al que conduce, pues en la vida real uno nunca sabe qué locuras se le ocurrirán a nuestros clientes.
Si no entienden el tema no se desesperen, hagan su mayor esfuerzo y verán que las cosas se aclaran al final.
Happy Coding!
Excelente aportación, estoy totalmente de acuerdo. Al final de cuentas el desarrollo en la mayoria de las veces se trata de investigar y utilizar los recursos que ya existen mediante nuestro conocimiento de como funcionan las cosas.
Muy buen aporte, es verdad node ha tenido muchos cambios como casi todos los lenguajes en estos tiempos, pero ya depende de uno investigar los temas planteado en el video y sus nuevas tecnologías.
A los que tengan el error "stack Error: not found: make" al ejecutar el comando node-gyp build -Utilizar:
sudo apt-get install build-essential
Si ese comando les da error:
sudo apt-get update
Luego, nuevamente:
sudo apt-get install build-essential
Y finalmente:
node-gyp build
Gracias me sirvió :D
Perfecto, gracias por el aporte
No logro comprender muy bien el porque de todo esto. Quisa estaria bueno poder aplicarlo en un ejemplo util en lugar de un simple hola mundo.
En el video comenta que “con esto podemos ejecutar directamente módulos de c++ dentro de nodejs” lo cual hace ver despues de hacer el ejemplo, es que puedes hacerte un módulo en c++ super optimizado para una tarea y ejecutarlo desde node.
En aplicaciones web probablemente no le encuentres sentido. Si estás haciendo una aplicación que necesita usar todo el poder de la computadora, puedes hacer algo específico con C++, invocarlo con NodeJS y recibir el resultaod, haciendo todo más rápido.
Otra ejemplo es que podrías hacer una Interfaz Web, con un Servidor en NodeJS que inyecte datos en un Nintendo Switch , casi todo el código hecho por los coders de la scene de Switch lo hacen con C++ entonces podrías cargar una de esas librerías de C y conectar así Frontend + Backend + Hardware ajeno.
Son muchos los casos de uso. 👍
Para solucionar el error al ejecutar el comando node-gyp build:
‘class v8::Local<v8::String>’ has no member named ‘ToLocalChecked’
Solamente basta con borrar:
isolate, "mundo").ToLocalChecked()); ^~~~~~~~~~~~~~~~~
¯\(ツ)/¯
Gracias! me sirvió
gyp info it worked if it ends with ok gyp info using node-gyp@7.1.0 gyp info using node@12.16.0 | win32 | x64 gyp info spawn C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe gyp info spawn args [ gyp info spawn args 'build/binding.sln', gyp info spawn args '/clp:Verbosity=minimal', gyp info spawn args '/nologo', gyp info spawn args '/p:Configuration=Release;Platform=x64' gyp info spawn args ] Los proyectos de esta solución se van a compilar de uno en uno. Para habilitar la compilación en paralelo, agregue el modificador "/m". hola.cc c:\users\usuario\desktop\cursos-platzi\fundamentos-nodejs\modules\nativos\hola.cc(16): error C2039: 'ToLocalChecked': no es un miembro de 'v8::Local<v8::String>' [C:\Users\Usuario\Desktop\cursos-platzi\fundament os-nodejs\modules\nativos\build\addon.vcxproj] c:\users\usuario\appdata\local\node-gyp\cache\12.16.0\include\node\v8.h(1399): note: vea la declaración de 'v8::Local<v8::String>' gyp ERR! build error gyp ERR! stack Error: `C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe` failed with exit code: 1 gyp ERR! stack at ChildProcess.onExit (C:\Users\Usuario\AppData\Roaming\npm\node_modules\node-gyp\lib\build.js:194:23) gyp ERR! stack at ChildProcess.emit (events.js:321:20) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12) gyp ERR! System Windows_NT 10.0.18363 gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\Usuario\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "build" gyp ERR! cwd C:\Users\Usuario\Desktop\cursos-platzi\fundamentos-nodejs\modules\nativos gyp ERR! node -v v12.16.0 gyp ERR! node-gyp -v v7.1.0 gyp ERR! not ok
Lo probe, tampoco sirvio. sigue dando el mismo error
la verdad no logre hacer correr siquiera el node-gyp configure, pero bueno, entendi la clase y que no estabamos haciendo nada funcional sino nos estaba mostrando lo que se podia hacer con node y otros lenguajes, seguire el curso sin completar esta clase esperando que no lo necesite en el futuro :(
Hola Martin, que error te da ? por ahí entre todos podemos ayudarte !
Te acompaño en el camino jaja esperando que si en algún momento lo llegue a necesitar pueda solucionarlo.
Módulos nativos en c++
JavaScript permite hacer uso de módulos nativos de c++. Para lograr esto debemos instalar sudo npm i -g node-gyp, este modulo de npm nos permite compilar módulos nativos de c++ en node.
Luego debemos tener listo nuestro archivo de código fuente en c++ junto a otro archivo .gyp, que nos ayudara hacer la compilación a JavaScript.
En este archivo .gyp le indicamos que va compilar, como se va llamar el archivo resultante y de donde va a tomar la info a convertir, todo esto lo dejamos como un json
{ "targets": [ { "target_name": "addon", "sources": [ "hola.cc" ] } ] }
luego le decimos a node que configure este modulo, con le comando node-gyp configure, como resultado tendremos en un directorio nuevo donde se encontraran diferentes archivos de código nativo, para finalizar con node-gyp build creamos nuestro modulo y estará listo para ser usado.
Gracias por el resumen!
Gracias!! 😁
El objetivo de está clase es: Aprender a cómo compilar código de C++ para poder usarlos como módulos en JS.
Esto es una bomba! Tendré que aprender C++ para sacarle todo el jugo a esto porque podrías hacer cualquier cosa!
Lo lindo de trabajar con Linux, es que todo te sale a la primera 😄😄😄
Aún mejor usar docker en linux y no embarrar el sistema con binarios innecesarios :)
Les detallo lo que tuve que hacer en windows para poder realizar esta clase ` EN WINDOWS: Ejecutas npm i -g --production windows-build-tools npm i -g node-gyp
Copias la carpeta python27 que esta en C:\Users\nombreUsuario\.windows-build-tools\ y las pegas en C:\ ahora si corres node-gyp configure en la carpeta de nativos y funciona :D
`
Recordar hacer el primer comando en power shell y como administrador.
Gracias, este es el más importante de todos los aportes.
No recomiendo este curso para principiantes, Yo cómo usuario experimentado en Nodejs puedo decir que muchos de los conceptos que el instructor "explica" dificilmente los podría digerir un iniciado o principiante en programación. Además la poca profesionalidad del instructor para definir conceptos y apoyar en la explicación del código no ayuda mucho.
Tardé literalmente 3 días en hacer andar el node-gyp. Tuve que reinstalar el Python, configurar variables de entorno con la nueva ruta de Python y reinstalar todo el visual studio C++ porque lo tenía corrupto. :'(
node-gyp: necesita un archivo json para guardar los datos del modulo que va a compilar, como se llamara y de donde obtendrá la información, este archivo se llama binding.gyp
Para todos los que tengan el mismo problema que yo a la hora de hacer node-gyp configure
************************************************************** gyp ERR! find VS You need to install the latest version of Visual Studio gyp ERR! find VS including the "Desktop development with C++" workload. gyp ERR! find VS For more information consult the documentation at: gyp ERR! find VS https://github.com/nodejs/node-gyp#on-windows gyp ERR! find VS **************************************************************``` Esto es porque les faltan unas herramientas de compilacion de c++ las pueden instalar Visual Studio Build Tools (utilizando la carga de trabajo "Visual C ++ build tools)
Lo solucioné descargando Visual Studio 2019. Ya que se ha instalado VS2019, instalé “Desktop development with C++” que pesa aproximadamente 1.9 Gb. Aquí los pasos -> https://docs.microsoft.com/en-us/cpp/build/vscpp-step-0-installation?view=vs-2019 ¿alguién lo ha solucionado de una manera más sencilla?
Los errores que están hola.cc son debidos a que el motor de IntelliSense no tiene registrado la ruta de la librería node.h
Debemos agregarle la ruta a Include path. El Include path es un folder que guarda todas las librerías que son incluidas en un archivo. El IntelliSense usa este folder para buscar las librerías y así poder ofrecer las sugerencias y opciones de auto completado.
Para añadir la ruta de node al include path:
Ctrl + Shift + P/usr/local/include/nodeEsto también se puede lograr modificando directamente el c_cpp_properties.json que tiene la configuración.
Por defecto, el JSON incluye la configuración "includePath": ["${workspaceFolder}/**"]
Solo necesitarían agregar la ruta /usr/local/include/node a ese array.
Esto debería quitar los íconos rojos que marcan los errores.
Cuando quiero sleccionar Edit Configurations(UI) o bien (JOSON) Me sale éste error: Abra una carpeta primero para editar las configuraciones
Buenas, muchos creo hemos tenido problemas para seguir este ejercicio, porque no se nos instala node-gyp, deberian tener un video con la solución, porque de verdad trate buscando en internet y no lo logre, esto para usuarios windows
Si no tenéis el compilador de C++ tenéis que instalarlo antes u os dará el error: make g++: Command not found
En mi caso, para distribuciones basadas en Debian/Ubuntu se solucionó con:
sudo apt install build-essential
Ok, al igual que en otros lenguajes, esta es la clase de: Con lo que aprendiste, ahora construye un cohete y llega al sol. Jejejejeje
Solución al problema en MacOS : gyp: No Xcode or CLT version detected!
Si tuvieron este error al ejecutar el comando node-gyp configure es probable que no tengan instaladas las herramientas de la línea de comandos de Xcode. Para comprobar si las tienen instalados pueden dirigirse a la carpeta ~/Library/Developer y ver si tienen una carpeta llamada CommandLineTools
\
Si no las tienen instaladas:
Se pueden instalar mediante el siguiente comando:
sudo xcode-select --install
\
Si sí las tienen instaladas y aún así tienen el error (como en mi caso):
1.- Borra la carpeta CommandLineTools 2.- Instala de nuevo las herramientas mediante el comando de arriba
Una vez instaladas las herramientas, reintenten el comando, a mi me funcionó sin ningún problema
El proceso de instalación puede ser muy tardado, tengan paciencia. :)
Les dejo el link directo al addon de c++: C++ Addons
Heroe sin capa man!! thanks!! super ☆☆☆☆☆