Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

244
Views
axios acepta un objeto URL en el proceso de representación, pero no en el proceso principal

Tengo una aplicación React que se ejecuta en Electron. A lo largo de todo el código del proceso del renderizador, he estado usando axios de la siguiente manera:

 import React from 'react'; import axios from 'axios'; import { useQuery } from 'react-query'; ... const { data: queryResponse, isLoading } = useQuery( [query, getParameters], () => { const url = new URL(`https://www.devel.server/${query}`); url.search = new URLSearchParams(getParameters); return axios.get(url); } );

Ahora traté de ejecutar el mismo código en el proceso principal y, de repente, recibo excepciones:

 const { app, BrowserWindow, Menu, ipcMain } = require('electron'); const { odtParse } = require('./main/odt-parser.js'); const shell = require('electron').shell; const path = require('path'); import axios from 'axios'; ipcMain.on('generate-employee-contract', (event, employeeId) => { const url = new URL('https://www.devel.server/employee-contract-summary'); url.search = new URLSearchParams({ employeeId }); axios.get(url).then(function (response) { const filename = odtParse('./assets/Contract.odt', response.variables, response.conditions); shell.openPath(path.join(__dirname, filename)); }) });

Este es el error que recibo de la llamada axios.get() :

UnhandledPromiseRejectionWarning: TypeError [ERR_INVALID_ARG_TYPE]: el argumento "url" debe ser de tipo cadena. Recibió una instancia de URL

¿Que esta pasando? ¿Por qué el mismo código funciona en un proceso pero no en el otro? ¿Está usando diferentes instancias de axios de alguna manera?

EDITAR: según lo solicitado, la salida de console.log(url) :

 URL { href: 'https://www.devel.server/employee-contract-summary?employeeId=377', origin: 'https://www.devel.server', protocol: 'https:', username: '', password: '', host: 'www.devel.server', hostname: 'www.devel.server', port: '', pathname: '/employee-contract-summary', search: '?employeeId=377', searchParams: URLSearchParams { 'employeeId' => '377' }, hash: '' }
about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Hay una diferencia entre la implementación de URL en entornos Chromium ( utilizados por los procesos de representación ) y Node ( utilizados por el proceso principal ). En particular, la clase de URL compatible con WHATWG es global (y siempre está disponible) en los navegadores compatibles, pero estuvo disponible globalmente solo desde Node 10.x; antes de eso, solo se tenía que acceder a través require('url').URL import.

Parece que esta diferencia no funciona bien con las comprobaciones de tipo axios en su parámetro de url , lo que provoca el error ERR_INVALID_ARG_TYPE . Una forma de evitarlo es evitar pasar la URL por completo, transformándola en una cadena:

 const url = new URL('https://www.devel.server/employee-contract-summary'); url.search = new URLSearchParams({ employeeId }); const urlString = url.toString(); // supported by URL class axios.get(urlString).then(/* ... */)

Otro enfoque que vale la pena verificar es asegurarse de que el código en el proceso principal proporcione a axios el adaptador correcto, lo que también podría eliminar el problema (ya que el adaptador debería ser responsable de cerrar brechas como esta).

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!