易者
易者
  • 发布:2025-01-03 10:46
  • 更新:2025-01-07 16:36
  • 阅读:125

【报Bug】uniCloud环境以及各平台SDK安装问题

分类:uniCloud

产品分类: uniCloud/App

操作步骤:

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

预期结果:

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

实际结果:

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

bug描述:

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

2025-01-03 10:46 负责人:无 分享
已邀请:
DCloud_uniCloud_CRL

DCloud_uniCloud_CRL

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

  • 易者 (作者)

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

    2025-01-03 18:27

易者

易者 (作者)

两个SDK的官网链接如下:

  1. 支付宝Alipay SDK
  2. 抖音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:……

以上就是本帖所说的问题。求助!感谢!

  • DCloud_uniCloud_CRL

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

    2025-01-04 12:05

  • 易者 (作者)

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

    2025-01-06 11:02

易者

易者 (作者)

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

  1. const AlipaySdk = require('alipay-sdk');
  2. const {AlipaySdk }= require('alipay-sdk');
  3. const AlipaySdk = require('alipay-sdk').default;
  4. const {AlipaySdk} = require('alipay-sdk').default;

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

  1. const Client, {MessageGetUserMessageRequest} = require('open_api_sdk');
    const CredentialClient = require('open_api_credential');
  2. const {Client, MessageGetUserMessageRequest} = require('open_api_sdk');
    const CredentialClient = require('open_api_credential');

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

请问能不能出个教程?或者直接内置?谢谢了!

  • DCloud_uniCloud_CRL

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

    2025-01-08 17:02

  • DCloud_uniCloud_CRL

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

    2025-01-08 17:04

  • DCloud_uniCloud_CRL

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

    2025-01-08 17:04

  • DCloud_uniCloud_CRL

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

    2025-01-08 17:04

  • 易者 (作者)

    支付宝用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云端环境的其它问题?

    2025-01-09 12:13

易者

易者 (作者)

今天再来看看怎么样了。

易者

易者 (作者)

这个帖子是不是下沉了?

要回复问题请先登录注册