我想在 cloudflare 的 worker 中写云函数,涉及到查询的 sdk,那 sdk 依赖问题怎么解决? 第一次写云函数,请大佬们指教一下.我看了很多个模板,都没看到有引入依赖的方式

140 天前
 HUZHUANGZHUANG
1990 次点击
所在节点    云计算
18 条回复
cwxiaos
140 天前
用 wrangler, 会将依赖和 main 编译成一个文件
justin2018
140 天前
Hono - Ultrafast web framework for the Edges

https://hono.dev/top

用框架试一试
HUZHUANGZHUANG
140 天前
@cwxiaos #1 谢谢大佬指点,我尝试了一下, 我是使用 https://docs.leancloud.cn/sdk/engine/functions/sdk/ 进行数据查询,但是怎么更换在 worker 下面的 src/index.js 中引入 leanengine 或者 leancloud-storage 的方式 代码都无法正常跑起来,总是报一些库内部的错误.暂时先放弃,我用一下二楼的方法试试
sparkinglemon
140 天前
https://developers.cloudflare.com/workers/get-started/quickstarts/

这里面找个例子你就懂了,加一个 wrangler 的配置之后,用相关命令打包。

(比较另类的解决方式是用 Pages 的 function )
sparkinglemon
140 天前
@HUZHUANGZHUANG worker 的 runtime 不一定能兼容你要用的 sdk ,扫了一眼比如 leanengine 就用了 connect 。
HUZHUANGZHUANG
140 天前
@sparkinglemon #5 所以我这种查询是不能用 worker 来实现吗?

大佬,确实是用 leanengine 会出现提示 ✘ [ERROR] service core:user:my-worker-test: Uncaught TypeError: globalThis.XMLHttpRequest is not a constructor 这个问题 最终报错就是在 connect 这个库
liuhai233
140 天前
HUZHUANGZHUANG
140 天前
@liuhai233 #7 问题在于我是想在 workers 中实现使用 leancloud sdk 进行数据查询,现在依赖加载不起来,查询就执行不起来,用啥都没用吧?
sparkinglemon
140 天前
@HUZHUANGZHUANG sdk 实现方式看起来希望不大,比如 XMLHttpRequest worker 就没实现,worker 兼容性你可以看下这两个链接:

https://developers.cloudflare.com/workers/runtime-apis/
https://developers.cloudflare.com/workers/runtime-apis/nodejs/

但是因为有 fetch ,所以可以通过 restapi 的方式来自己适配
v2yllhwa
140 天前
可以试试用 fetch pollyfill 一个 XMLHttpRequest 。
wdssmq
140 天前
cf 自己有对应 leancloud 各种产品生态位的东西。。KV ,D1 之类的
type
140 天前
@sparkinglemon
(比较另类的解决方式是用 Pages 的 function )
-----
这个可以细讲一下么
Uyloal
140 天前
@HUZHUANGZHUANG #6 CF Worker 是边缘 Function ,Runtime 是类似于浏览器的执行环境,基本上依赖了 NodeJS 能力的库都不能用。
sparkinglemon
140 天前
@type pages 最简单的部署就是随便搞个 vite 的项目打包对吧,但是如果想在同一个项目下提供几个接口,就可以在根目录下新建一个“functions”目录,这目录下的 js/ts 会被自动识别为 worker 的函数,在边缘执行提供部分的服务端能力(也可以对接 D1 ,KV 这套东西),也能基于命名规则做一些中间件。

我个人体验下来会比纯 worker 项目顺手些,而且能同时兼顾页面和接口,避免需要分离拆成两个项目。
type
140 天前
@sparkinglemon 明白了,感谢!
HUZHUANGZHUANG
140 天前
@sparkinglemon #14 我想问一下,这个另类的方法是不是也解决不了涉及到第三方 sdk 调用的情况?
sparkinglemon
140 天前
@HUZHUANGZHUANG 解决不了,你的情况,问题在于你要用的包本身在 worker 的环境下就运行不了…… worker 还是适合直接调用第三方 api 的情况,很少有专门适配过的 sdk
HUZHUANGZHUANG
140 天前
@sparkinglemon #17 好的,感谢回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1002132

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX