从不吃西瓜
从不吃西瓜
  • 发布:2024-02-21 15:17
  • 更新:2024-02-21 16:59
  • 阅读:582

【已解决】unicloud 云对象调用mqtt提示错误

分类:uniCloud

请教如何解决 globalThis is not defined 错误

在云对象mqtt-publish目录下npm了mqtt.js
连接本地云函数调用正常
上传部署云端后,连接云端云函数,前端调用提示Uncaught (in promise) Error: [mqtt-publish]: globalThis is not defined 错误
云对象代码

async msgPublish(msg) {  
        const mqtt = require('mqtt');  
        let host = 'tcp://202.120.92.203:1883';  
        let publishTopic = '/vaeb9Ypj/O5YVteYn/data';  
        let  clientId = "mqtt_1";  
        let client = null;  
        if (client == null || client.connented == false) {  
            console.log('in if code')  
            client = mqtt.connect(host, {  
                clientId,  
                clean: true,  
                connectTimeout: 4000,  
                username: 'O5YVteYn',  
                password: 'CU2b5ZfP',  
            });  
            client.on('connect', () => {  
                const message1 = JSON.stringify(msg)  
                client.publish(publishTopic, message1, error => {  
                    // console.log(error || '消息发布成功');  
                    if (error) {  
                        console.log(error)  
                    } else {  
                        console.log('消息发布成功');  
                        client.end();  
                    }  
                })  
            });  
        }  
        return {  
            code: 200  
        };  
    }

前端代码

methods: {  
            send() {  
                cloud.msgPublish({  
                    data: "hello world"  
                }).then(res=>{  
                    console.log(res)  
                })  
            }  
        }
2024-02-21 15:17 负责人:无 分享
已邀请:
从不吃西瓜

从不吃西瓜 (作者) - 从不吃西瓜

是云端node.js版本问题,云端默认是nodejs8
需要在第一次上传部署云对象时,在package.json中添加cloudfunction-config属性,并加入runtime

{  
    "name": "mqtt-publish",  
    "dependencies": {  
        "mqtt": "^5.3.5"  
    },  
    "extensions": {  
        "uni-cloud-jql": {}  
    },  
    "cloudfunction-config": {  
        "runtime": "Nodejs14"  
    }  
}

之后在云端控制台可以看到云端运行环境是nodejs14

要回复问题请先登录注册