amagovpt / autenticacao.gov

Middleware Oficial de Identificação Eletrónica em Portugal - Cartão de Cidadão, da Chave Móvel Digital e Sistema de Certificação de atributos profissionais
https://www.autenticacao.gov.pt
European Union Public License 1.2
164 stars 33 forks source link

Erro ao correr o exemplo do wrapper node-js windows e ubuntu #90

Closed ramalhovfc closed 2 years ago

ramalhovfc commented 2 years ago

Bom dia, Estou a ter problemas a correr o exemplo presente em C:\dev\ist\autenticacao.gov\pteid-mw-pt_src\eidmw\eidlibNodeJS_Wrapper\examples Em Ubuntu estou a ter o seguinte erro (experimentei node 17.3.0 e 0.10.25)

ramalho@RW:/mnt/c/dev/ist/autenticacao.gov/pteid-mw-pt/_src/eidmw/eidlibNodeJS_Wrapper/examples$ nvm use 17.3.0
Now using node v17.3.0 (npm v8.3.0)
ramalho@RW:/mnt/c/dev/ist/autenticacao.gov/pteid-mw-pt/_src/eidmw/eidlibNodeJS_Wrapper/examples$ node simple_example.js                    
node:internal/modules/cjs/loader:1179                                                                                                      
  return process.dlopen(module, path.toNamespacedPath(filename));                                                                          
                 ^                                                                                                                          

Error: libpteidcommon.so.2: cannot open shared object file: No such file or directory                                                      
    at Object.Module._extensions..node (node:internal/modules/cjs/loader:1179:18)                                                          
    at Module.load (node:internal/modules/cjs/loader:975:32)                                                                                
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)                                                                      
    at Module.require (node:internal/modules/cjs/loader:999:19)                                                                            
    at require (node:internal/modules/cjs/helpers:102:18)                                                                                  
    at Object.<anonymous> (/mnt/c/dev/ist/autenticacao.gov/pteid-mw-pt/_src/eidmw/eidlibNodeJS_Wrapper/examples/simple_example.js:3:13)    
    at Module._compile (node:internal/modules/cjs/loader:1097:14)                                                                          
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1149:10)                                                            
    at Module.load (node:internal/modules/cjs/loader:975:32)                                                                                
    at Function.Module._load (node:internal/modules/cjs/loader:822:12) {                                                                    
  code: 'ERR_DLOPEN_FAILED'                                                                                                                
}                                                                                                                                                                                                                                                                              
Node.js v17.3.0
ramalho@RW:/mnt/c/dev/ist/autenticacao.gov/pteid-mw-pt/_src/eidmw/eidlibNodeJS_Wrapper/examples$ nvm use 0.10.25
Now using node v0.10.25 (npm v1.3.24)
ramalho@RW:/mnt/c/dev/ist/autenticacao.gov/pteid-mw-pt/_src/eidmw/eidlibNodeJS_Wrapper/examples$ node simple_example.js
module.js:356
  Module._extensions[extension](this, filename);
                               ^
Error: libpteidcommon.so.2: cannot open shared object file: No such file or directory
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/mnt/c/dev/ist/autenticacao.gov/pteid-mw-pt/_src/eidmw/eidlibNodeJS_Wrapper/examples/simple_example.js:3:13)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)   

Em windows tentei versões do node de 32 e 64 bits mas obtive isto:

C:\dev\ist\autenticacao.gov\pteid-mw-pt\_src\eidmw\eidlibNodeJS_Wrapper\examples>node simple_example.js
internal/modules/cjs/loader.js:805
  return process.dlopen(module, path.toNamespacedPath(filename));
                 ^
Error: \\?\C:\dev\ist\autenticacao.gov\pteid-mw-pt\_src\eidmw\eidlibNodeJS_Wrapper\build\Release\pteid.node is not a valid Win32 application.
\\?\C:\dev\ist\autenticacao.gov\pteid-mw-pt\_src\eidmw\eidlibNodeJS_Wrapper\build\Release\pteid.node
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:805:18)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:690:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (C:\dev\ist\autenticacao.gov\pteid-mw-pt\_src\eidmw\eidlibNodeJS_Wrapper\examples\simple_example.js:3:13)
    at Module._compile (internal/modules/cjs/loader.js:776:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)

Que ambiente devo usar para conseguir correr o exemplo? Obrigado

agrr commented 2 years ago

Viva João, uma nota importante é que as linguagens oficialmente suportadas são apenas Java, C++ e .Net que são as linguagens referidas no manual do nosso SDK: https://amagovpt.github.io/docs.autenticacao.gov/manual_sdk.html

Este módulo wrapper está num estado de desenvolvimento inicial, é baseado apenas em geração de código com a ferramenta SWIG. Por exemplo, neste momento exceções que sejam lançadas nas libs nativas (C++) não são devidamente tratadas e propagadas para erros Javascript.

Os erros que obteve têm a ver com a tentativa de carregamento de um módulo antigo que estava na diretoria build/Release. É necessário recompilar este módulo porque este não está incluído no build global do projeto.

Entretanto adicionámos as instruções de compilação do módulo NodeJS no respetivo ficheiro README: dedd98e96bbaa57806e48943416499846534ffc9

Verificámos também que é possível testar o código de exemplo em Ubuntu 20.04 com Node 10.19.0 que é versão que está disponível nos repositórios da distro.

ramalhovfc commented 2 years ago

Obrigado pelo esclarecimento e rápida resposta