Kotlin/JS在Docker中构建失败:package.json反斜杠路径问题
解决Kotlin多平台项目Docker构建中package.json路径分隔符问题
问题根源
Windows本地构建时,Kotlin/JS编译器生成的package.json使用Windows风格反斜杠路径,而Docker基于Linux环境,无法识别这些路径,导致构建失败。
解决方案
1. 强制Kotlin/JS生成正斜杠路径
在Kotlin多平台模块的构建脚本(build.gradle.kts或build.gradle)中,配置Kotlin编译器使用正斜杠作为路径分隔符,覆盖系统默认行为:
Kotlin DSL(build.gradle.kts)
kotlin { js(IR) { // 可根据实际目标调整为LEGACY等 compilations.all { kotlinOptions { filePathSeparator = "/" } } // 若只需针对主编译配置,可替换为: // compilations["main"].kotlinOptions.filePathSeparator = "/" } }
Groovy DSL(build.gradle)
kotlin { js(IR) { compilations.all { kotlinOptions { filePathSeparator = "/" } } } }
该配置会让Kotlin编译器生成的所有路径统一使用正斜杠,保证跨平台环境的兼容性。
2. 清理Docker构建上下文,避免Windows文件污染
在项目根目录创建.dockerignore文件,排除本地生成的构建产物和依赖目录,确保Docker构建环境干净:
build/ node_modules/ .gradle/ *.iml .idea/
这样可以避免Windows环境下生成的带反斜杠路径的文件被带入Docker构建流程,防止残留文件或缓存引发的异常。
3. 升级Kotlin版本(可选)
路径分隔符的跨平台兼容问题在Kotlin 1.7及以上版本中已被官方修复。如果项目兼容性允许,将Kotlin版本升级到1.7.x或更高,可从根源上解决该问题,无需额外配置。
内容的提问来源于stack exchange,提问作者Lime
相关产品推荐
相关产品推荐

