You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将QuickJS的JS模块转成C并作为内置模块使用?

将JS模块编译为QuickJS内置模块的步骤

1. 用qjsc转换JS模块为C/目标文件

执行对应命令,把你的myModule.js转为C源码或目标文件:

  • 生成C源码文件:
qjsc -c -o myModule.c myModule.js

参数说明:-c表示仅生成C代码,-o指定输出文件名

  • 直接生成目标文件(.o):
qjsc -c -o myModule.o myModule.js

2. 修改QuickJS编译配置

要让模块像std/os一样内置,需调整QuickJS源码目录的配置:

  • 编辑Makefile:在OBJS变量中追加你的myModule.o(若已生成目标文件),或在源码列表中加入myModule.c,确保编译时包含该模块。
  • 注册模块:打开quickjs-libc.c,仿照js_init_module_std/js_init_module_os的写法,添加你的模块注册逻辑:
JSModuleDef *js_init_module_myModule(JSContext *ctx, const char *module_name)
{
    JSModuleDef *m;
    m = JS_NewCModule(ctx, module_name, myModule_init);
    if (!m) return NULL;
    JS_AddModuleExport(ctx, m, "default");
    // 模块有其他导出项时,在此添加对应JS_AddModuleExport调用
    return m;
}

接着在js_init_std函数中调用js_init_module_myModule(ctx, "myModule");,确保引擎启动时自动注册模块。

3. 重新编译QuickJS

回到QuickJS源码目录,执行编译命令:

make

编译完成后,新的qjs可执行文件就内置了myModule,直接用import myModule from "myModule";即可导入使用,无需额外路径。

内容的提问来源于stack exchange,提问作者Cemal Gönültaş

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 11:49:52