【问题标题】:After using vite+vue3 to build the project and importing roslibjs, an error is reported使用vite+vue3构建项目并导入roslibjs后报错
【发布时间】:2021-11-28 03:21:00
【问题描述】:

我使用vue3,当我用vite创建项目时,我导入roslibjs库并使用其中一个函数出现错误,如下图所示。但是当我尝试使用vuecli创建项目时,导入同一个库后,一切正常。

// 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>

【问题讨论】:

    标签: javascript vue.js vuejs3 ros vite


    【解决方案1】:

    我不确定 Vue CLI + Webpack 对 roslib 在浏览器中的工作有何不同。

    但是,在浏览器中,您应该使用roslib 的预构建版本(其中特定于节点的构造被转译掉)每个docs

    如果您在浏览器中使用 roslib,所有的类都将被导出到一个名为 ROSLIB 的全局变量中。如果你使用nodejs,这是你require('roslib')时得到的变量

    导入roslib/build/roslib.js脚本,设置window.ROSLIB

    <script setup>
    import 'roslib/build/roslib';
    
    const ros = new window.ROSLIB.Ros({
      url: ws_address,
    });
    ⋮
    </script>
    

    demo

    【讨论】:

    • 想想,导入roslib/build/roslib.js脚本解决了我的问题,但我想知道为什么vite和vuecli以不同的导入方式处理roslibjs以及window.ROSLIB有什么好处
    猜你喜欢
    • 2021-06-05
    • 2021-10-03
    • 2022-10-14
    • 2022-08-16
    • 2022-11-17
    • 2021-05-08
    • 2022-01-11
    • 2023-02-05
    • 2013-08-02
    相关资源
    最近更新 更多