Uso vue3, cuando creo un proyecto con vite , importo la biblioteca roslibjs y obtengo un error al usar una de las funciones, como se muestra a continuación. Pero cuando trato de usar vuecli para crear un proyecto, después de importar la misma biblioteca, todo está bien. 
// vite created 'vite-app' project npm init vite@latest cd vite-app npm instal --save roslib // vuecli created 'vuecli-app' project vue create vuecli-app cd vuecli-app npm install --save roslib <script setup> import ROSLIB from "roslib"; let ws_address = '127.0.0.1:9090' let connected = false; const ros = new ROSLIB.Ros({ url: ws_address, }) const connect = () => { ros.on("connection", () => { connected = true; console.log("Connected!"); }); ros.on("error", (error) => { console.log("Error connecting to websocket server: ", error); }); ros.on("close", () => { connected = false; console.log("Connection to websocket server closed."); }); } const disconnect = () => { ros.close(); } </script> <template> <div> <p class="text-success" v-if="connected">Connected!</p> <p class="text-danger" v-else>Not connected!</p> <input type="text" v-model="ws_address" /> <br /> <button @click="disconnect" class="btn btn-danger" v-if="connected">Disconnect!</button> <button @click="connect" class="btn btn-success" v-else>Connect!</button> </div> </template>No estoy seguro de qué hace Vue CLI + Webpack de manera diferente para que roslib funcione en el navegador.
Sin embargo, en el navegador, debe usar las versiones preconstruidas de roslib (donde se transpilan las construcciones específicas del nodo) según los documentos :
Si usa roslib en un navegador, todas las clases se exportarán a una variable global llamada ROSLIB. Si usa nodejs, esta es la variable que obtiene cuando lo requiere ('roslib')
Importe el roslib/build/roslib.js , que establece window.ROSLIB :
<script setup> import 'roslib/build/roslib'; const ros = new window.ROSLIB.Ros({ url: ws_address, }); ⋮ </script>