uni-app 云对象引用了jwt,本地和云端都是nodejs14环境,本地运行正常,云端运行返回空对象。

uni-app 云对象引用了jwt,本地和云端都是nodejs14环境,本地运行正常,云端运行返回空对象。

信息类型 详细信息
产品分类 uniCloud/App

示例代码:

云对象代码:

const jwt = require('jsonwebtoken')  

module.exports = {  
    _before: function () { // 通用预处理器  
        httpInfo = this.getHttpInfo()  
    },  
        async login(){ //平台登录  
        return jwt  
       }  
}

package.json

{
  "name": "dpadminen",  
  "dependencies": {  
    "jsonwebtoken": "^8.5.1"  
  },  
  "extensions": {  
    "uni-cloud-jql": {}  
  },  
  "cloudfunction-config": {  
    "runtime": "Nodejs14"  
  },  
  "version": "1.0.0",  
  "main": "index.obj.js",  
  "devDependencies": {},  
  "scripts": {  
    "test": "echo \"Error: no test specified\" && exit 1"  
  },  
  "keywords": [],  
  "author": "",  
  "license": "ISC",  
  "description": ""  
}

操作步骤:

预期结果:

和本地运行结果一样,返回jwt对象

实际结果:

返回{}

bug描述:

引用了jwt,本地和云端都是nodejs14,本地可以,云端运行就是返回空对象。 15:12:55.769 [本地运行][云对象:dpAdminEn],调用方法:[login],执行结果: {“decode”:,“verify”:,“sign”:,…} 15:13:13.581 [阿里云:doupin]HBuilderx已支持通过命令行cli部署uniCloud资源,详情参考: 网页链接 [不再提示] 15:13:13.582 [阿里云:doupin]正在上传云对象dpAdminEn… 15:13:13.584 [阿里云:doupin]正在安装云对象dpAdminEn依赖… 15:13:17.636 [阿里云:doupin]云对象dpAdminEn上传完成 15:13:55.108 [阿里云:doupin]HBuilderx已支持通过命令行cli部署uniCloud资源,详情参考: 网页链接 [不再提示] 15:13:55.110 [阿里云:doupin]正在上传云对象dpAdminEn(已携带dpAdminEn.param.js参数)… 15:13:55.111 [云端运行:阿里云:doupin]正在安装云对象dpAdminEn依赖… 15:13:59.056 [云端运行:阿里云:doupin]云对象dpAdminEn上传完成,开始运行… 15:14:12.970 [云端运行:阿里云:doupin]运行状态:成功 15:14:12.972 [云端运行:阿里云:doupin]运行结果:{} 15:14:12.973 [云端运行:阿里云:doupin]运行日志:


更多关于uni-app 云对象引用了jwt,本地和云端都是nodejs14环境,本地运行正常,云端运行返回空对象。的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 云对象引用了jwt,本地和云端都是nodejs14环境,本地运行正常,云端运行返回空对象。的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 中使用云对象时,如果本地运行正常但云端返回空对象,可能是由于以下原因之一导致的。你可以按照以下步骤进行排查和解决问题:


1. 检查云对象代码

确保云对象的代码在云端和本地是一致的,尤其是 jwt 的相关代码。可能是某些代码在云端没有正确执行。

  • 检查是否有条件判断(如环境变量)导致代码在云端被跳过。
  • 确保 jwt 的依赖在云端已正确安装。

2. 确保依赖正确安装

云函数的依赖需要在云端环境中重新安装。如果 jwt 依赖未正确安装,可能会导致返回空对象。

  • cloudfunctions 目录下找到你的云函数或云对象。
  • 确保 package.json 中包含 jwt 依赖。
  • HBuilderX 中右键点击云函数或云对象,选择 上传并部署:云端安装依赖

3. 检查云函数日志

查看云函数的运行日志,检查是否有错误信息。

  • uniCloud 控制台中,找到对应的云函数或云对象。
  • 查看运行日志,检查是否有报错(如依赖缺失、代码错误等)。

4. 检查返回值的处理

确保你在云对象中正确返回了数据。如果返回的数据格式不正确,可能会导致前端接收到空对象。

  • 在云对象中,使用 return 返回数据。
  • 确保返回的数据是 JSON 可序列化的对象。

例如:

module.exports = {
  async myMethod() {
    const token = jwt.sign({ foo: 'bar' }, 'secret');
    return { token }; // 返回一个对象
  }
};

5. 检查云对象调用方式

在前端调用云对象时,确保正确接收返回值。

例如:

const myCloudObject = uniCloud.importObject('my-cloud-object');
const res = await myCloudObject.myMethod();
console.log(res); // 检查返回值

6. 环境变量和配置

检查是否有环境变量或配置在云端未正确设置。例如,jwt 的密钥可能依赖于环境变量。

  • uniCloud 控制台中,检查云函数的环境变量是否正确配置。
  • 确保本地和云端的配置一致。

7. 调试云端代码

如果问题仍然无法解决,可以在云端代码中添加日志,逐步调试问题。

例如:

module.exports = {
  async myMethod() {
    console.log('Start myMethod'); // 日志
    const token = jwt.sign({ foo: 'bar' }, 'secret');
    console.log('Token:', token); // 日志
    return { token };
  }
};
回到顶部