今天写 Worker ,依赖了一个三方包,三方包里面依赖了 request-compose 。结果 Worker 就启动不了,说缺少 ulr 、ps 、zlib ... 等一堆 node 的包。查了一下 Worker 的 node 兼容文档,https://developers.cloudflare.com/workers/runtime-apis/nodejs/ 。发现 Worker 只兼容一些 node 包,并且在依赖的时候还要通过 node:xxx 去引入,比如 import { Buffer } from 'node:buffer';
。一方面能通过 node: 前缀引入的兼容包比较少,别一方向,我也无法去给第三方包里面的依赖都添加 node: 前缀。
是我使用方式不对吗?还是的确是这个限制?
1
oott123 225 天前 1
对,不可以。
Wrangler 打包的时候能帮你处理一部分,但大部分 node 生态的第三方包是不能直接用的。你把他当成一个浏览器可能简单点。 |
2
huihuimoe 225 天前 via iPhone 1
是的,cf workers 的运行时不是 node ,不要用 node 的思想写服务
|
3
baobao1270 225 天前 via Android
toml 配置文件添加 flag node_compat 试过没有
|
4
K1W1 OP @baobao1270 试过
|
6
tianzx 225 天前 via iPhone
可以重度使用。我的博客用了全套 cf 的技术,但是需要花时间调
|