跳至主要內容

如何在插件脚本内require外部模块

muzzik大约 1 分钟笔记CocosCocosCreator开发技巧

作者版本 2.4.3
众所周知在插件脚本内是不能 require 外部脚本的,在下做过各种尝试,发现最终办法一共有两个:

  • 在构建后修改 index.js 内的 require 顺序,实现(伪 - 插件脚本)
  • 在插件脚本内通过同步/异步的 require 外部脚本,在下最开始尝试了同步方法,结果发现只能在编辑器或者网页预览的时候才能正常使用,于是用了异步的方法,测试在编辑器、网页预览、web-mobile 测试通过(原生没测,不过应该也行)
    这里给大家说的就是通过异步方式 require,方法很简单,如下:
  • 首先建立一个传递 require 的普通脚本
cc.director.emit(
	"require",
	CC_PREVIEW
		? globalThis.__quick_compile_project__.require
		: require || globalThis.require || globalThis.__require
);
  • 然后在插件脚本内接收(注意:外部模块路径必须以 "./assets/tool" 的格式传递,开头必须从 ./assets/
cc.director.on("require", (_require)=> {
    cc.log("插件脚本 require", _require("外部模块路径", CC_PREVIEW ? "preview-scripts/__qc_index__.js" : undefined));
});

当然这种方法还是些问题的,比如必须保证同步的装饰器

📣 觉得很赞?分享给你的朋友吧!