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
更多关于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 };
}
};