es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Vinculando el OpenSSL local a la extensión de Node.js en C++.

Estoy escribiendo un complemento de C++ para Nodejs que utiliza OpenSSL 3 y estoy obteniendo este error al intentar compilar el código con el comando node-gyp build:

/Users/myuser/Library/Caches/node-gyp/17.0.1/include/node/openssl/macros.h:155:4: error: "OPENSSL_API_COMPAT expresa un nivel de compatibilidad de API imposible"

Puedo ver que el OpenSSL utilizado aquí se incluye desde la carpeta de NodeJS, ¿hay alguna forma de vincular la biblioteca OpenSSL que instalé con Homebrew en mi Mac M1?

Mi archivo binding.gyp se ve así:

{
  "targets": [
    {
      "target_name": "module",
      "include_dirs": [ "/opt/homebrew/opt/openssl@3/include" ],
      "sources": [ "./module.cpp" ],
      "libraries": [
            "/opt/homebrew/opt/openssl@3/lib/libcrypto.3.dylib",
            "/opt/homebrew/opt/openssl@3/lib/libcrypto.a",
            "/opt/homebrew/opt/openssl@3/lib/libcrypto.dylib"
        ]
    }
    ]
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de enlazar la biblioteca OpenSSL que instalaste con Homebrew en tu Mac M1. En tu archivo binding.gyp, asegúrate de incluir la ruta donde está instalada la biblioteca OpenSSL.

    Según tu archivo binding.gyp, parece que ya lo has hecho al agregar la ruta /opt/homebrew/opt/openssl@3/include a la propiedad include_dirs y agregar las siguientes bibliotecas a la propiedad libraries:

    /opt/homebrew/opt/openssl@3/lib/libcrypto.3.dylib
    /opt/homebrew/opt/openssl@3/lib/libcrypto.a
    /opt/homebrew/opt/openssl@3/lib/libcrypto.dylib
    

    Sin embargo, si aún estás obteniendo un mensaje de error al ejecutar el comando node-gyp build, es posible que desees comprobar si tienes instalada la versión correcta de OpenSSL. Asegúrate de tener instalado OpenSSL 3 y de que la versión coincida con la especificada en tu archivo binding.gyp.

    Si eso no funciona, es posible que desees considerar actualizar tu versión de NodeJS a la última versión estable o intentar reinstalar tanto NodeJS como OpenSSL 3 desde cero.

Comments are closed.