Tengo un proyecto Preact usando Vite . Quiero usar el SDK de nexmo-client de vonage, pero cuando importo con el método ES, mi proyecto se interrumpe.
// app.tsx import NexmoClient from 'nexmo-client';Me sale el siguiente error en la consola.
index.js:19 Uncaught ReferenceError: global is not defined at index.js:19:19 at index.js:12:22 at node_modules/nexmo-client/dist/index.js (index.js:16:1) at __require (chunk-J43GMYXM.js?v=f3505250:11:50) at dep:nexmo-client:1:16Sin embargo, si lo importo usando una etiqueta de secuencia de comandos, funciona bien.
// index.html <script src="node_modules/nexmo-client/dist/nexmoClient.js"></script> // app.tsx const NexmoClient = window.NexmoClient;OK, hay dos problemas aquí.
En primer lugar, NexmoClient intenta usar global que no está disponible en el navegador.
En segundo lugar, NexmoClient tiene una dependencia de socket.io-client, por alguna razón, Vite importa una versión Node de socket.io-client que nuevamente intenta usar módulos que no están disponibles en el navegador, a saber, 'child_process'.
Para solucionar ambos problemas, puede proporcionar la siguiente configuración a Vite, esto debería garantizar que la compilación resultante sea compatible con el hermano.
// vite.config.js or vite.config.ts import { defineConfig } from 'vite' import preact from '@preact/preset-vite' export default defineConfig({ plugins: [preact()], define: { global: {}, }, resolve: { alias: { "xmlhttprequest-ssl": "./node_modules/engine.io-client/lib/xmlhttprequest.js" } } })