如何不使用Gradle,通过kotlinc-js将Kotlin文件编译为Node可运行的JS
Kotlin/JS 原生 kotlinc-js 编译运行Node端代码解决方案
问题根源
你遇到的kotlin模块未找到报错,核心原因是kotlinc-js默认不会将Kotlin/JS标准库打包到输出的JS文件中,JVM编译器常用的-include-runtime参数在JS编译器下不支持,仅指定-libraries参数只会让编译器在编译阶段做类型校验和符号解析,不会把运行时代码嵌入输出文件。
解决方法
有两种常用方案可选,根据你的使用场景选择即可:
方案1:单文件打包(无额外依赖,适合分发)
直接通过编译器实验参数将标准库打包到输出的单个JS文件中,编译后可直接用Node运行,不需要安装任何npm依赖。
Makefile编写规则如下:
build-js: kotlinc-js main.kt \ -output main.kt.js \ -module-kind commonjs \ -main call \ -Xinclude-runtime
编译完成后直接执行:node main.kt.js
即可正常输出Bye JS。
方案2:单独引入标准库(适合开发阶段)
如果不需要单文件分发,可以通过npm安装对应版本的Kotlin/JS标准库供Node加载:
- 首先查询本地kotlinc-js版本,确保npm安装的标准库版本完全一致,避免兼容性问题:
kotlinc-js -version - 项目目录下初始化npm项目并安装对应版本的kotlin包:
npm init -y npm install kotlin@<你的编译器版本号>
- 用常规命令编译代码:
build-js: kotlinc-js main.kt \ -output main.kt.js \ -module-kind commonjs \ -main call \ -libraries $KOTLIN_HOME/lib/kotlin-stdlib-js.jar
注:将
$KOTLIN_HOME替换为你本地Kotlin的安装路径,默认SDKMAN安装路径为~/.sdkman/candidates/kotlin/current,brew安装路径为/usr/local/Cellar/kotlin/<版本号>,Windows为安装目录根路径。
- 编译完成后直接运行即可:
node main.kt.js
内容的提问来源于stack exchange,提问作者Some random IT boy
相关产品推荐
相关产品推荐

