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

噢噢,那我用的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 我改了副档名, 改了路径依旧不行, 所以不知道开发组加了甚麽谜之操作

那只能请开发组的同学帮忙看看了

为什么我试了2.x的3.x的还是不行呢?连接没有任何反应,是不是服务端的版本号也要一致才行?

好像是 2.x 要与 2.x, 大版号要一致, 小号不影响

搞了好久,我用curl命令能建立连接,但是cocos打开之后连接报跨域问题,尝试了很多网上的办法都没用

跨域是你服务器没有配置允许跨域, curl 不跟浏览器安全协议

需要怎么设置呢?我尝试了各种办法都没用
e8da3f31-9e77-4cf2-a177-0d156574fff5

在配置cors后面加这段
// Add headers
app.use(function (req, res, next) {
// 设置响应头
res.header(“Cross-Origin-Embedder-Policy”, “require-corp”);
res.header(“Cross-Origin-Opener-Policy”, “unsafe-none”);
res.header(“Access-Control-Allow-Origin”, “*”);
// Pass to next layer of middleware
next();
});