uni-app uniCloud环境以及各平台SDK安装问题

发布于 1周前 作者 gougou168 来自 Uni-App

uni-app uniCloud环境以及各平台SDK安装问题

操作步骤

直接按照正常安装方式进行安装即可复现

预期结果

希望能顺利安装各平台最新版的SDK且能正常使用。

实际结果

安装过程无法顺利进行,即使进行更改后勉强完成安装,但无法使用。

bug描述

目前uniCloud阿里云最高版本的nodejs 20.10.0安装抖音和支付宝的最新版SDK都有问题,已经耽误很久了,请问官方能不能出个安装教程,或者直接内置各平台最新版的SDK?这个问题多次发帖以及在群里询问都无回应,uni官方最近是咋了?麻烦看到回复一下,谢谢!

相关链接

项目创建方式 开发环境 版本号
uniCloud/App 阿里云 nodejs 20.10.0

14 回复

安装的是什么sdk,sdk名字和版本发一下。安装有问题是什么问题,如果有错误请把错误信息发上来。


不好意思!以为又是很多天才能等到回复,所以下午没跟进,请见谅!我把问题重复整理在楼下的跟帖里面,请移步查阅,非常感谢!

两个SDK的官网链接如下:

支付宝Alipay SDK
抖音OpenAPI SDK

uniCloud服务端的nodejs版本用的是uniCloud阿里云当前已安装的最新版20.10.0。
支付宝SDK升级alipay-sdk v3 到 v4 时,用NPM下载了官网的源文件后,上传到uniCloud报错找不到index文件,无法上传安装,把package.json文件中的一些路径中的./符号删去后可以正常安装依赖,但用支付宝官网提供的方式引用SDK就报错ReferenceError: MessagePort is not defined,加不加.default都一样,用回V3版又正常。这个问题之前在dcloud论坛发过,原帖是uniCloud升级Alipay SDK版本后报错,但很多天没回应,无奈只好多次发帖,甚至提交bug。
抖音SDK用NPM下载了官网的源文件后,上传到uniCloud也报错The file “index.js” cannot be found,自建空白index.js文件后提示上传成功。然后再用抖音官网的使用方式测试SDK,报错Cannot find module ‘open_api_sdk’ Require stack:……
以上就是本帖所说的问题。求助!感谢!

这两个文档上都是esm引入方式,云函数目前只能使用Commonjs引入方式,怀疑是引入方式不对,贴下引入代码看下。

回复 DCloud_uniCloud_CRL: 都用的是uniCloud的Commonjs引入方式,放在下面的评论区中,请移步。

支付宝SDK引用方式尝试过以下几种:

const AlipaySdk = require(‘alipay-sdk’);
const {AlipaySdk }= require(‘alipay-sdk’);
const AlipaySdk = require(‘alipay-sdk’).default;
const {AlipaySdk} = require(‘alipay-sdk’).default;

抖音SDK引用方式尝试过以下几种:

const Client, {MessageGetUserMessageRequest} = require(‘open_api_sdk’); const CredentialClient = require(‘open_api_credential’);
const {Client, MessageGetUserMessageRequest} = require(‘open_api_sdk’); const CredentialClient = require(‘open_api_credential’);

以上方式都不行。我前些天在支付宝社区发帖请教此事,有说新版本的运行环境不支持Web Worker特性的,也有说可能新版本的SDK不完全兼容Node.js环境的,我很是迷茫,不知所措,但又急用。
请问能不能出个教程?或者直接内置?谢谢了!

支付宝是支持commonjs引入的,const {AlipaySdk }= require(‘alipay-sdk’); 可以正常使用。

抖音的sdk不支持直接引入,但是require(’@open-dy/open_api_sdk’).default也是可以正常引入的。

还是检查一下你的引入方式是否正确

如果有着急的问题可以私信联系我。

支付宝用const {AlipaySdk }= require(‘alipay-sdk’); 可以引入,但无法正常使用,会报错:webidl.is.MessagePort = webidl.util.MakeTypeAssertion(MessagePort) ReferenceError: MessagePort is not defined 但是在我本地的Node.js的v22.12.0版本的Express 框架里用这种方式可以正常使用支付宝SDK v4。 抖音用require(’@open-dy/open_api_sdk’).default还是不能引入,报错:Error: Cannot find module ‘@open-dy/open_api_sdk’ Require stack: at Module._resolveFilename [as _oldResolveFilename] (node:internal/modules/cjs/loader:1140:15) at Function.resolve (node:internal/modules/helpers:188:19) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) 抖音的SDK文件需要更改吗?以什么路径上传到uniCloud云端? 会不会是uniCloud云端Node.js的版本问题,或者是uniCloud云端环境的其它问题?

今天再来看看怎么样了。

这个帖子是不是下沉了?

在处理uni-app和uniCloud环境配置以及各平台SDK安装问题时,我们需要确保开发环境已正确设置,并且所有依赖项都已正确安装。以下是一些针对常见问题的解决方案,包含具体的代码和配置示例。

1. 初始化uni-app项目

首先,确保你已经安装了HBuilderX编辑器或者Node.js环境。使用HBuilderX创建uni-app项目是最简便的方式,但你也可以通过命令行来初始化项目。

# 使用 Vue CLI 创建 uni-app 项目
vue create -p dcloudio/uni-preset-vue my-uni-app
cd my-uni-app

2. 配置uniCloud环境

在HBuilderX中,你可以通过右键点击项目目录选择“开启uniCloud云服务”来快速配置uniCloud。如果需要手动配置,可以按照以下步骤:

  • 在项目根目录下创建cloudfunctions文件夹。
  • manifest.json中添加uniCloud配置:
"uniCloud": {
    "provider": "aliyun", // 或者其他云服务商
    "envId": "your-env-id" // 云环境ID
}

3. 安装平台SDK

对于需要在uni-app中使用的第三方SDK,比如支付、推送等,你可以通过npm或者yarn来安装。

# 安装一个支付SDK示例
npm install some-payment-sdk --save

main.js中引入并使用该SDK:

import PaymentSDK from 'some-payment-sdk';

Vue.prototype.$payment = PaymentSDK.init({
    // 初始化参数
    appId: 'your-app-id',
    privateKey: 'your-private-key'
});

4. 配置云函数

cloudfunctions文件夹中创建云函数,例如hello-world

// 云函数入口文件
const cloud = require('wx-server-sdk');

cloud.init();

exports.main = async (event, context) => {
    return {
        success: true,
        message: 'Hello, World!'
    };
};

5. 调用云函数

在前端代码中,你可以通过uniCloud.callFunction来调用云函数:

uniCloud.callFunction('hello-world')
    .then(res => {
        console.log(res.result); // 输出: { success: true, message: 'Hello, World!' }
    })
    .catch(err => {
        console.error(err);
    });

总结

以上代码示例涵盖了uni-app和uniCloud环境的基本配置,以及如何在项目中安装和使用第三方SDK。确保你的开发环境(如Node.js、HBuilderX)已更新到最新版本,以避免兼容性问题。如果遇到特定错误,建议查阅uni-app和uniCloud的官方文档或社区论坛获取更详细的解决方案。

回到顶部