关于creator3.8.5编辑器扩展的实现,引用项目使用的npm包的问题

  • Creator 版本: 3.8.5

  • 目标平台: 扩展编辑器

我写了一个esm规范的npm的包 【kunpocc】,在我的项目中使用
kunpocc中提供了几个装饰器,并且提供了对外方法,获取装饰器装饰的信息
npm包在项目根目录通过 npm install kunpocc 安装,在项目中正常使用

然后我想实现一个引擎插件,配合我的npm包使用
通过 操作当前场景 | Cocos Creator 这个文档
在引擎插件中实现了 scene.ts 文件

内容如图:
image

当这个插件在编辑器中启用后,他总是提示我
Error: require() of ES Module /Users/gongxh/work/kunpolibrary/KunpoCreator3.8/node_modules/kunpocc/dist/kunpocc.mjs not supported.

想问一下引擎组,这个问题我应该怎么解决?

@jare @minggo @song2008_2001 @476393671

哪位大佬能帮忙看一下,第一次写引擎插件,太难了

顶上去看看

我再来顶,太难了

哎呀 蓝非的老哥。。。

哈哈 被认出来了

你这kunpo太明显了。。

哎 这个论坛有点死气沉沉的

有没有大佬指点一下

不至于不支持esm吧,creator本来就推荐使用esm规范的
并且他的cc也是esm了

在2.x上是项目导入的插件,用的全局命名空间
他的插件里边是可以用的,最近想适配一下3.x,把之前用的一些工具迁移过去
在这个问题上卡主了

感觉应该是 fairygui-cc版本问题,或许试试其他版本?

等有时间了我把这两个库都编译成支持cjs的试试

感觉错误是指用 require 方法加载了 es module,把依赖库编译为 cjs 应该能够解决。

我自己的包编译成cjs是可以的,require我自己的包时不报错了
主要是里边还引用了cc以及fgui,然后关联引用的时候又报错了 :joy:

creator3.8.5不是已经推荐使用esm了吗,然后在写creator用的包的时候,就用了这种格式
插件这一块怎么还是cjs的。。。

下边是我用的临时解决方案

目前编辑器的 ts 代码编译后还是用 cjs 的模块格式的。插件也保持 cjs 会比较好。

明白了,感谢 我再想想怎么处理吧