导入socket.io后脚本编译失败

首先使用npm安装socket.io客户端
92dd55cd-bb53-4ad6-b944-f36c4ae3cac0

然后在脚本中导入并创建
b7dfba61-9e01-4d6b-b419-bbcaa6032a9a

cocos的IDE中直接编译失败

socket.io这块的使用有什么讲究吗?

说句难听的话 直接用自带的WS会死吗, 多简单的东西 非要自己把问题复杂化

你试试改为这様, 不过我用的是 socket.io 2.x的版本, 估计4.x 没啥区别

import { connect } from ‘socket.io-client’
const socket = connect(url,option)

也不能这麽説, 有可能是人家公司服端架构就是socket.io的, 你一个后进公司的人你总不能让别人把架构都换回ws吧, 况且ws 与 socket.io又不互通

还是编译不通过,可能cocos3.8的不适合用socket.io

自带的有用过,不过看socket.io服务端集成的比较好,所以想尝试一下

应该不关事, 我的cc3.8.6, 用 socket.io 2.4.0 版本一切正常

噢噢,那我用的socket.io4.8.1的,前一个项目用的2.x的可以,我只是想更新版本试试看

好像是cc 对 那些支持cjs与esm的node库都有问题, 很多时候要不是纯cjs, 要不就是纯esm

这个是不是没办法解决,我查资料说只要在package.json中加什么babel参数就好了,但是加了也没用

试了一下, socket.io 3.x没问题, package exports 只配了cjs的输出
説白了是cc 的编译对node_modules处理不友好

噢噢,那只有4.x的不能用了,感谢支持

4.x 也有方法可以正常运作, 把node_modules库里socket.io-client/package.json中把

 "import": {
   "types": "./build/esm/index.d.ts",
   "default": "./build/esm/index.js"
 },

改成

"import": {
"types": "./build/cjs/index.d.ts",
 "default": "./build/cjs/index.js"
},

再一步证明cc 对esm支持有问题

666,果然社区大神多。社区是我家,天天爱上它 :rofl:

改完之后好用吗?改了之后编译是通过了,但是运行报错了:
f86f4cd7-8c22-410f-a26c-4334e7655627

你爱得太早了 :smiling_imp:,砸还有fs这种模块 , fs是本地nodejs的

不清楚啊 :joy:崩溃了,还是不能私自乱改,水平有限

你还是用3吧,这个处理支持有问题,按了葫芦又起瓢

行吧,只能这样了。封装的模块确实不能轻易改的

做了一下实验, cc3.8 前的版本是可以用的, 3.8后应该加了一些强验证处理, 我试了部分支持esm与cjs的库, 如果你esm的库引用的index副档名不是mjs, 就跑不了。 试了几个有些可行, 有些不行, socket.io 我改了副档名, 改了路径依旧不行, 所以不知道开发组加了甚麽谜之操作