Recibo un error extraño y parece que no puedo buscar en Google las cosas correctas, ya que no encuentro ayuda en línea. Estoy escribiendo un script que convierte archivos swagger a mecanografiados. El mensaje de error es el que está en el título, y lamentablemente esa es toda la información que tengo. Publicaré el código a continuación y la parte de donde (creo) proviene el mensaje:
async function getJson(){ const agent = new https.Agent({ rejectUnauthorized: false }); return axios.get('https://common-customer-bpms.dev.havida.net/v3/api-docs', { httpsAgent: agent }) .then(response => generateSwagger(response)) } getJson(); async function generateSwagger(response) { try { execSync(`java -jar ..\\swagger-codegen-cli.jar generate -l typescript-angular -o .\\projects\\common\\src -i ${response}`); } catch (error){ console.log(error); console.log('You must have Java installed! You may have to change JAVA_HOME location & path (Ex: set JAVA_HOME=`C:\\Programme\\Java\\jre1.8.0_321`), (set PATH=${JAVA_HOME}/bin:$PATH)') } } Creo que el error proviene del bloque de try , el último argumento ( -i ${response} ). ¿Puedo usar el parámetro de la función de esta manera, o solo puedo usar cadenas en los comandos cli? estoy perdido
Después de varios días de intentarlo, aquí está el código completo que funciona para cualquiera que lo necesite:
import axios from 'axios'; import https from 'node:https'; import {execSync} from 'child_process'; import fs from 'fs/promises'; async function getJson(){ const agent = new https.Agent({ rejectUnauthorized: false }); return axios.get('https://common-customer-bpms.dev.havida.net/v3/api-docs', { httpsAgent: agent }) .then(response => fs.writeFile("temp.json", JSON.stringify(response.data), (error)=>{console.log(error)})) .then(() => generateSwagger()) } getJson(); async function generateSwagger() { try { execSync(`java -jar ..\\swagger-codegen-cli.jar generate -l typescript-angular -i temp.json -o .\\projects\\common\\src\\lib`); } catch (error){ console.log(error); console.log('You must have Java installed! You may have to change JAVA_HOME location & path (Ex: set JAVA_HOME=`C:\\Programme\\Java\\jre1.8.0_321`), (set PATH=${JAVA_HOME}/bin:$PATH)') } finally { fs.unlink("temp.json"); } }Esto extrae el json de la URL deseada y lo escribe en un archivo. Luego, este archivo se usa como destino para -i, y una vez que se completa la conversión, el json se elimina en el bloque finalmente.