Atentos, node-gyp requiere Python 2 para funcionar
Conocer los conceptos básicos de NodeJS
Instalación de Node.js
Node: orígenes y filosofía
EventLoop: asíncrona por diseño
Monohilo: implicaciones en diseño y seguridad
Configurar las variables de entorno en Node.js
Herramientas para ser más felices: Nodemon y PM2
Cómo manejar la asincronía
Callbacks
Callback Hell: refactorizar o sufrir
Promesas
Async/await
Entender los módulos del core
Globals
File system
Console
Errores (try / catch)
Procesos hijo
Módulos nativos en C++
HTTP
OS
Process
Utilizar los módulos y paquetes externos
Gestión de paquetes: NPM y package.json
Construyendo módulos: Require e Import
Módulos útiles
Datos almacenados vs en memoria
Buffers
Streams
Conocer trucos que no quieren que sepas
Benchmarking (console time y timeEnd)
Debugger
Error First Callbacks
Manejar herramientas con Node
Scraping
Automatización de procesos
Aplicaciones de escritorio
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Carlos Hernández
Aportes 107
Preguntas 28
Atentos, node-gyp requiere Python 2 para funcionar
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!
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
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.
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());
^~~~~~~~~~~~~~~~~
¯\(ツ)/¯
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 😦
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.
El objetivo de está clase es: Aprender a cómo compilar código de C++ para poder usarlos como módulos en JS.
Lo lindo de trabajar con Linux, es que todo te sale a la primera 😄😄😄
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
`
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)
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/node
Esto 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.
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
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
\
Se pueden instalar mediante el siguiente comando:
sudo xcode-select --install
\
<h3>Si sí las tienen instaladas y aún así tienen el error (como en mi caso):</h3>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
que chistoso el nombre, “miAddon” ojo soy mexicano
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
ahora me dice que hay un error en #include <node.h>
ese es el unico problema que tengo hasta ahora con el compilador.
// hello.cc
#include <node.h>
namespace demo {
using v8::FunctionCallbackInfo;
using v8::Isolate;
using v8::Local;
using v8::NewStringType;
using v8::Object;
using v8::String;
using v8::Value;
void Method(const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = args.GetIsolate();
args.GetReturnValue().Set(String::NewFromUtf8(
isolate, "mundo", NewStringType::kNormal).ToLocalChecked());
}
void Initialize(Local<Object> exports) {
NODE_SET_METHOD(exports, "hola", Method);
}
NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize)
} // namespace demo```
const miAddon = require('./build/Release/addon');
console.log(miAddon.hola());
gyp ERR! find Python```
npm install --global windows-build-tools
Usando PoweShell como administrador.
Y para linux:
sudo apt-get install build-essential
para los que actualmente no les funciona lo que hace el profesor, es de paciencia y apoyarse de los comentarios de los compañeros
Tratando de seguir la clase, me encontré con el problema de que el proceso crasheaba cuando ejecutaba el comando:
$ node-gyp build
Dando errores de que no encontraba make en el sistema. Por lo que, busque el repositorio de node-gyp (ver aquí) y en este dan recomendaciones para cada sistema (Linux, macOS, Windows) y para Linux recomiendan instalar:
Normalmente, viene por defecto con Ubuntu, puedes verificarlo ejecutando:
$ python3 --version
Y debería de salir la versión que tienes instalada, sino puedes instalarlo ejecutando por separado los comandos:
$ sudo apt-get update
$ sudo apt-get install python3.10
GNU Make es una herramienta que controla la generación de ejecutables y otros archivos no fuente de un programa a partir de los archivos fuente del mismo.
Puedes instarla ejecutando por separado los comandos:
$ sudo apt-get update
$ sudo apt-get install make
Personalmente, lo instale con un conjunto de otros compiladores llamado build-essential mediante los comandos, nuevamente ejecutando por separado:
$ sudo apt update
$ sudo apt install build-essential
Comprueba su instalación ejecutando el comando:
$ gcc --version
Y ahora sí, puedes ejecutar los comandos de la clase, espero les sea de ayuda. Un saludo 😎
Cada vez se amplia mas el mundo de NodeJS. Va a llevar mucho tiempo estudiarlo
parece ser que este video no funciona por ciertas cosas que han cambiado en node.js
seguí esta clase ayudándome de este video y me funcionó.
https://www.youtube.com/watch?v=O4Rlq_NSkoM
Estoy utilizando wsl2 y me arrojaba error al querer hacer.
node-gyp configure
Para solucionarlo utilicé.
npm install -g node-pre-gyp
SOLUCION "python3"
Para ver la version de Python en mac! $python --version
NOTA : en las mac traen la version 2 de python (no la desistales pueso la usa en su sistema operativo!)
1 - descargar la ultima version 3
https://www.python.org/downloads/
2 - Una vez instalada vemos que no nos muestra la utima version ya que mac conserva la version 2
3 - Tipeamos en terminal $ python3 --version
Listo!
es necesario ubicarse bien en las carpetas para que funcione bien.
Me dio un par de errores, pero creo que lo que se quiere mostrar es la funcionalidad.
Igual al hacerlo con otro lenguaje sera necesario referirse a la documentacion
Me surgió una interrogante al ver la extención .cc en el archivo. Resulta que si es diferente del mundo Unix (MacOS y Linux) la extensión que se usa es .cpp, pero dentro de Unix es .cc
😲
al momento de escribir node-gyp configure tira el siguiente error:
node-gyp configure
internal/modules/cjs/loader.js:895
throw err;
^
Error: Cannot find module 'graceful-fs’
Require stack:
A nadie le dio problema en reproducir este video?? o solo a mi !!
Como a la mitad se queda pegado y toca mover lo con el mouse.
estoy en mac y me tira estos errores.
node-gyp configure
gyp info it worked if it ends with ok
gyp info using node-gyp@6.1.0
gyp info using node@12.13.0 | darwin | x64
gyp info find Python using Python version 3.7.5 found at "/usr/local/opt/python/bin/python3.7"
gyp info spawn /usr/local/opt/python/bin/python3.7
gyp info spawn args [
gyp info spawn args '/usr/local/lib/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args 'binding.gyp',
gyp info spawn args '-f',
gyp info spawn args 'make',
gyp info spawn args '-I',
gyp info spawn args '/Applications/XAMPP/xamppfiles/htdocs/platzi master/Fundamentos de nodeJS/nativos/build/config.gypi',
gyp info spawn args '-I',
gyp info spawn args '/usr/local/lib/node_modules/node-gyp/addon.gypi',
gyp info spawn args '-I',
gyp info spawn args '/Users/carlosramirez/Library/Caches/node-gyp/12.13.0/include/node/common.gypi',
gyp info spawn args '-Dlibrary=shared_library',
gyp info spawn args '-Dvisibility=default',
gyp info spawn args '-Dnode_root_dir=/Users/carlosramirez/Library/Caches/node-gyp/12.13.0',
gyp info spawn args '-Dnode_gyp_dir=/usr/local/lib/node_modules/node-gyp',
gyp info spawn args '-Dnode_lib_file=/Users/carlosramirez/Library/Caches/node-gyp/12.13.0/<(target_arch)/node.lib',
gyp info spawn args '-Dmodule_root_dir=/Applications/XAMPP/xamppfiles/htdocs/platzi master/Fundamentos de nodeJS/nativos',
gyp info spawn args '-Dnode_engine=v8',
gyp info spawn args '--depth=.',
gyp info spawn args '--no-parallel',
gyp info spawn args '--generator-output',
gyp info spawn args 'build',
gyp info spawn args '-Goutput_dir=.'
gyp info spawn args ]
No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'.
No receipt for 'com.apple.pkg.DeveloperToolsCLILeo' found at '/'.
No receipt for 'com.apple.pkg.DeveloperToolsCLI' found at '/'.
gyp: No Xcode or CLT version detected!
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (/usr/local/lib/node_modules/node-gyp/lib/configure.js:351:16)
gyp ERR! stack at ChildProcess.emit (events.js:210:5)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)
gyp ERR! System Darwin 19.3.0
gyp ERR! command "/usr/local/bin/node" "/usr/local/bin/node-gyp" "configure"
gyp ERR! cwd /Applications/XAMPP/xamppfiles/htdocs/platzi master/Fundamentos de nodeJS/nativos
gyp ERR! node -v v12.13.0
gyp ERR! node-gyp -v v6.1.0
gyp ERR! not ok ```
Nooo, la verdad no puede con esta clase,
deberían especificar los problemas que se pueden tener
Mmm, la verdad que no me está gustando este curso. Siempre termino teniendo que aprender todo yo leyendo por mi cuenta en blogs o en youtube… Esta clase en particular no entendi nada
no me gusto la clase, hace falta mas detalles sobre la instalación y las dependencias
Para los que están tomando el curso a día de hoy y tienen el error que les dice que deben instalar el kit de desarrollo de c#, solo deben instalar “visual studio tools”, buscar dentro “visual studio build tools 2022” y seleccionar la casilla que dice “herramientas para el escritorio con c++” e instalar, luego reinician para aplicar cambio y es todo.
les dejo el enlace de descarga para el visual estudio tools.
npm i -g node-gyp
hello.cc
Este es un ejemplo de hello world
// hello.cc
#include <node.h>
namespace demo {
using v8::FunctionCallbackInfo;
using v8::Isolate;
using v8::Local;
using v8::Object;
using v8::String;
using v8::Value;
void Method(const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = args.GetIsolate();
args.GetReturnValue().Set(String::NewFromUtf8(
isolate, "world").ToLocalChecked());
}
void Initialize(Local<Object> exports) {
NODE_SET_METHOD(exports, "hello", Method);
}
NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize)
} // namespace demo
binding.gyp
Tiene la configuración del módulo, el nombre y el archivo de recurso que tiene la lógica del módulo.
{
"targets": [
{
"target_name": "addon",
"sources": ["hello.cc"]
}
]
}
Se ejecuta un comando que va a hacer la configuración necesaria
node-gyp configure
Y retorna esto en consola.
yp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | linux | x64
gyp info find Python using Python version 3.8.10 found at "/usr/bin/python3"
gyp info spawn /usr/bin/python3
gyp info spawn args [
gyp info spawn args '/home/santiagobr/.nvm/versions/node/v16.7.0/lib/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args 'binding.gyp',
gyp info spawn args '-f',
gyp info spawn args 'make',
gyp info spawn args '-I',
gyp info spawn args '/home/santiagobr/personalProjects/course-nodejs-basis/src/modules/natives/build/config.gypi',
gyp info spawn args '-I',
gyp info spawn args '/home/santiagobr/.nvm/versions/node/v16.7.0/lib/node_modules/node-gyp/addon.gypi',
gyp info spawn args '-I',
gyp info spawn args '/home/santiagobr/.cache/node-gyp/16.7.0/include/node/common.gypi',
gyp info spawn args '-Dlibrary=shared_library',
gyp info spawn args '-Dvisibility=default',
gyp info spawn args '-Dnode_root_dir=/home/santiagobr/.cache/node-gyp/16.7.0',
gyp info it worked if it ends with ok
node-gyp build
Y retorna esto en consola
gyp info using [email protected]
gyp info using [email protected] | linux | x64
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory '/home/santiagobr/personalProjects/course-nodejs-basis/src/modules/natives/build'
CXX(target) Release/obj.target/addon/hello.o
In file included from ../hello.cc:2:
/home/santiagobr/.cache/node-gyp/16.7.0/include/node/node.h:806:43: warning: cast between incompatible function types from ‘void (*)(v8::Local<v8::Object>)’ to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
806 | (node::addon_register_func) (regfunc), \
| ^
/home/santiagobr/.cache/node-gyp/16.7.0/include/node/node.h:840:3: note: in expansion of macro ‘NODE_MODULE_X’
840 | NODE_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage)
| ^~~~~~~~~~~~~
../hello.cc:23:1: note: in expansion of macro ‘NODE_MODULE’
23 | NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize)
| ^~~~~~~~~~~
SOLINK_MODULE(target) Release/obj.target/addon.node
COPY Release/addon.node
make: Leaving directory '/home/santiagobr/personalProjects/course-nodejs-basis/src/modules/natives/build'
gyp info ok
En u archivo vamos a hacer el llamado del módulo y ejecutarlo de la siguiente forma
const miAddon = require('./build/Release/addon')
console.log(miAddon.hello())
y hará lo que haga el módulo
¡Quiero un curso de integración de Node.js con C++!!
me perdi totalmente, seguire adelante pero espero q no toques mas nada relacionado a esto en el curso. no se entiendo pero nada. por que obviamente en tu maquina va a andar profe, pero en la de nosotros seguramente en la mayoria falla
Esta clase me parecio fantastica para entender que para programar con otros lenguajes no es necesario entenderla al 100%, y la tarea interdisciplinaria se concatena gracias al buen node.
Me sale este error
gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | win32 | ia32
gyp info find Python using Python version 3.9.6 found at "C:\Users\joako\AppData\Local\Programs\Python\Python39\python.exe"
gyp ERR! find VS
gyp ERR! find VS msvs_version not set from command line or npm configgyp ERR! find VS VCINSTALLDIR not set, not running in VS Command Prompt
gyp ERR! find VS could not use PowerShell to find Visual Studio 2017
or newer, try re-running with '--loglevel silly' for more details
gyp ERR! find VS looking for Visual Studio 2015
gyp ERR! find VS - not found
gyp ERR! find VS not looking for VS2013 as it is only supported up to Node.js 8
gyp ERR! find VS
gyp ERR! find VS **************************************************************
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 **************************************************************
gyp ERR! find VS
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Visual Studio installation to use
gyp ERR! stack at VisualStudioFinder.fail (C:\Users\joako\AppData\Roaming\npm\node_modules\node-gyp\lib\find-visualstudio.js:121:47)
gyp ERR! stack at C:\Users\joako\AppData\Roaming\npm\node_modules\node-gyp\lib\find-visualstudio.js:74:16
gyp ERR! stack at VisualStudioFinder.findVisualStudio2013 (C:\Users\joako\AppData\Roaming\npm\node_modules\node-gyp\lib\find-visualstudio.js:351:14)
gyp ERR! stack at C:\Users\joako\AppData\Roaming\npm\node_modules\node-gyp\lib\find-visualstudio.js:70:14
gyp ERR! stack at C:\Users\joako\AppData\Roaming\npm\node_modules\node-gyp\lib\find-visualstudio.js:372:16
gyp ERR! stack at C:\Users\joako\AppData\Roaming\npm\node_modules\node-gyp\lib\util.js:54:7
gyp ERR! stack at C:\Users\joako\AppData\Roaming\npm\node_modules\node-gyp\lib\util.js:33:16
gyp ERR! stack at ChildProcess.exithandler (child_process.js:326:5)
gyp ERR! stack at ChildProcess.emit (events.js:376:20)
gyp ERR! stack at maybeClose (internal/child_process.js:1055:16)
gyp ERR! System Windows_NT 10.0.19042
gyp ERR! command "C:\\Program Files (x86)\\nodejs\\node.exe" "C:\\Users\\joako\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "configure"
gyp ERR! cwd C:\Users\joako\Escuela_de_Desarrollo_Web_Platzi\Curso_de_Fundamentos_Node.js\FundamentosNodeJS\modulos\nativos
gyp ERR! node -v v14.17.0
gyp ERR! node-gyp -v v8.2.0
gyp ERR! not ok
Buen día, compañeros miren el error que me arroja la consola, alguno sabe poruqe se genera?
MiguelG@LAPTOP-3733RI MINGW64 ~/Desktop/Curso de Node js/Modulo C++/modulos/nativos
$ apt install build-essential
bash: apt: command not found
MiguelG@LAPTOP-3733RI MINGW64 ~/Desktop/Curso de Node js/Modulo C++/modulos/nativos
$ node-gyp configure
gyp info it worked if it ends with ok
gyp info using node-gyp@7.1.2
gyp info using node@12.17.0 | win32 | x64
gyp ERR! find Python
gyp ERR! find Python Python is not set from command line or npm configuration
gyp ERR! find Python Python is not set from environment variable PYTHON
gyp ERR! find Python checking if "python3" can be used
gyp ERR! find Python - "python3" is not in PATH or produced an error
gyp ERR! find Python checking if "python" can be used
gyp ERR! find Python - "python" is not in PATH or produced an error
gyp ERR! find Python checking if "python2" can be used
gyp ERR! find Python - "python2" is not in PATH or produced an error
gyp ERR! find Python checking if Python is C:\Python37\python.exe
gyp ERR! find Python - "C:\Python37\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Python27\python.exe
gyp ERR! find Python - "C:\Python27\python.exe" could not be run
gyp ERR! find Python checking if the py launcher can be used to find Python
gyp ERR! find Python - "py.exe" is not in PATH or produced an error```
Si devuelve error tipo: _Gyp ERR! stack Error: make
failed with exit code: 2 _ Se debe tener Node actualizado. por esta fecha debemos estar trabajando por la version 12.19 LTS
Tuve muchos problemas para esta clase.
Error: Cannot find module 'graceful-fs'
Require stack:
Error: Cannot find module 'graceful-fs'
Require stack:
Gracias a StackOverFlow y a la virgen de Guadalupe, al parecer era necesario reinstalar NPM.
🤷♀️
En node js se puede utilizar códigos de otros lenguajes de programación y luego hacer uso de ellos invocandolos como modúlos de node js
Hola,
Para los de windows si tienen este error
node-gyp : File C:\Users\npm\node-gyp.ps1 cannot be loaded because running scripts is disabled on this system.
Prueben con estos 2 pasos:
Primero ejecutar el comando desde el powershell:
a. PS C:> Set-ExecutionPolicy RemoteSigned
PD Te dejo los link con mas detalles
https://tecadmin.net/powershell-running-scripts-is-disabled-system/
b. Despues de remover las politicas pude crear al carpeta “build” pero no me dejo continuar, xq faltaba instalar los componente de “Desktop development with C++” esto lo corregi instalando el paquete mencionado desde visual studio 2019.
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 **************************************************************
Con esto me funciono espero les sirva…
Saludos
NO HE PODIDO SOLUCIONAR ESTO… 😦
Al parecer para esta clase hay que tener instalado python
Si alguien tiene este error:
Error: Module did not self-register
Solo tiene que ejecutar otra vez
node-gyp build
Buenas tardes, Hasta que puede hacerlo tuve que instalar python y también el visual Studio para instalar las herramientas c++ para que no me diera errores, Me sigue por el link
Para los que tengan problemas con esta clase, es importante que tengan todos los componentes y paquetes necesarias para poder hacer la compilacion del modulo nativo de c++. Para lo anterior por favor ver la siguiente documentacion que me ayudo mucho https://github.com/nodejs/node-gyp#on-windows
Modulos nativos, que big is Nodejs
en Mac. Cambie la extension .cc por .cpp
Y elimine una carpeta build que se genero.
Volví a correr el comando:
node-gyp configure
Y funciono!
Tengo problemas al ejecutar node-gyp build, me aparece lo siguiente
krztvl@LAPTOP-191TBDO7:/mnt/c/Users/Cristobal/Documents/Cursos programacón/Curso_de_Fundamentos_de_Node.js/modulos/nativos$ node-gyp build
gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | linux | x64
gyp ERR! build error
gyp ERR! stack Error: not found: make
gyp ERR! stack at getNotFoundError (/mnt/c/Program Files (x86)/Nodist/bin/node_modules/node-gyp/node_modules/which/which.js:13:12)
gyp ERR! stack at F (/mnt/c/Program Files (x86)/Nodist/bin/node_modules/node-gyp/node_modules/which/which.js:68:19)
gyp ERR! stack at E (/mnt/c/Program Files (x86)/Nodist/bin/node_modules/node-gyp/node_modules/which/which.js:80:29)
gyp ERR! stack at /mnt/c/Program Files (x86)/Nodist/bin/node_modules/node-gyp/node_modules/which/which.js:89:16
gyp ERR! stack at /mnt/c/Program Files (x86)/Nodist/bin/node_modules/node-gyp/node_modules/isexe/index.js:42:5
gyp ERR! stack at /mnt/c/Program Files (x86)/Nodist/bin/node_modules/node-gyp/node_modules/isexe/mode.js:8:5/node-gyp/node_modules/isexe/mode.js:8:5
gyp ERR! stack at FSReqCallback.oncomplete (fs.js:169:21)
gyp ERR! System Linux 4.4.0-18362-Microsoft node_modules/node-gyp/bin/node-gyp.js" "build"
gyp ERR! command "/usr/bin/node" "/mnt/c/Program Files (x86)/Nodist/bin/de_Fundamentos_de_Node.js/modulos/nativosnode_modules/node-gyp/bin/node-gyp.js" "build"
gyp ERR! cwd /mnt/c/Users/Cristobal/Documents/Cursos programación/Curso_de_Fundamentos_de_Node.js/modulos/nativos ión/Curso_de_Fundamentos_de_Node.js/modulos/nativos$
gyp ERR! node -v v12.11.1
gyp ERR! node-gyp -v v6.1.0
krztvl@LAPTOP-191TBDO7:/mnt/c/Users/Cristobal/Documents/Cursos programackrztvl@LAPTOP-191TBDO7:/mnt/c/Users/Cristobal/Documents/Cursos programacón/Curso_de_Fundamentos_de_Node.js/modulos/nativos$ ```
Gente cuando vayan a instalar “node-gyp”, revisen bien que tnegan una version compatible de nodejs y npm, puede sonar como una bobada pequeña, pero me tomo tiempo encontrar ese pequeño detalle que no me dejaba continuar
Estos módulos nativos en C++ son muy útiles cuando queremos programar a nivel del lenguaje ensamblador, desarrollar videojuegos Web o aplicaciones IoT.
Es un video introductorio a un tema que tiene mucha tela de donde cortar pero me parece genial que lo tenga el cusro, sino ni me entero que node puede hacer esto1
Si estás viendo esto en el 2022 y tienes un error como este Error: Module did not self-register:. ejecuta de nuevo node-gyp build.
melase esto en mac a yuda zsh: command not found: node-gyp
Existen módulos que nos permiten convertir el código de C++ en un módulo que se utilice desde JS, para este necesitaremos un archivo de código fuente.
npm i -g node-gyp requiere por mínimo Python 2, si usas entornos de Python les puede servir.
// Modulos nativos C++
// Como agregar modulos c++ addons
// const myAddon = require('addon')
const myAddon = require('./build/Release/addon')
// Aqui requerimos el addon que creamos con gyp, para que ejecutara c++ implementado
console.log(myAddon);
// needs Python, node-gyp
Acabo de tener un error al ejecutar node-gyp build (a la fecha 02/07/22) y he podido solucionarlo, mi error era el siguiente:
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack at ChildProcess.emit (node:events:527:28)
gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12)
gyp ERR! System Linux 5.10.16.3-microsoft-standard-WSL2
gyp ERR! command "/usr/bin/node" "/usr/bin/node-gyp" "build"
gyp ERR! cwd /home/user/platziWLS/fundamentos-nodejs/modulos/nativos
gyp ERR! node -v v17.8.0
gyp ERR! node-gyp -v v9.0.0
gyp ERR! not ok
actualice build-essential pero me seguia fallando, al final me funciono instalando node-gyp directamente en la carpeta nativos donde cree el build y no en la carpeta general del curso, dentro de /modulos/nativos/ use:
sudo npm i --location=global node-gyp
y ya me funciono el comando build
Para quien tenga dudas, acerca de la utilidad o caso de uso de los módulos nativos en C/C++ podría ser por ejemplo en Iot Internet of Things, por ejemplo los Arduino o Raspberry Pi (Estos bien pueden ser desarrollados en lenguajes de programación C/C++)
Clase 10/10
Super esta clase no sabia que node se podia hacer algo asi
Para los que tengan problemas, donde dice que no se encontro Python o no es compatible, a mi me funciono borrar la aplicación de python y luego instalar anaconda, de esa manera funciono a la primera.
Interesante clase!!
Al segundo intento si salio 😄
Cree otro método en el hola. cc, configure, construí con node-gyp y llame en el js.
const miAddon = require('./build/Release/addon');
console.log(miAddon.hola()+" "+miAddon.mundo());
node-gyp: es un paquete de npm que permite compilar módulos nativos en node.
Me parece genial que hallan dejado los errores que obtiene el profesor porque asi es el dia a dia y eso ayuda a a aprender a leer los errores
Si vas a usar node-gyp debes saber que necesitas Python instalado ya que trabaja en ese entorno y la última versión de Visual Studio para tener las dependencias de C++.
Tampoco pude obtener el modulo addon directamente
Creo que debo practicar más la creación de archivos fuentes
No sabía que se podían hacer este tipo de cosas con Node, esto abre un mundo de posibilidades
const miaddon =require(’./build/release/addon’);
console.log(miAddon);
Si alguien tiene este problema en MacOS: gyp: No Xcode or CLT version detected!.
Le recomiendo seguir los pasos de este artículo, a mí me ayudó a solucionarlo!
https://medium.com/@mrjohnkilonzi/how-to-resolve-no-xcode-or-clt-version-detected-d0cf2b10a750
gran clase!
Esto está muy bueno 👌
Para los usuarios de Windows les recomiendo instalar el paquete completo de Visual Studio, donde se instalan todos lo paquetes de Python, C y demas herramientas
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?