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

这个是不是没办法解决,我查资料说只要在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();
});

还是没用,我感觉应该是别的问题

res.header("Access-Control-Allow-Origin", "*")
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
res.header("Access-Control-Allow-Credentials", "true")
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS")
res.header("Access-Control-Expose-Headers", "Content-Length")
res.header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE, OPTIONS")