Kotlin JS编译报Unresolved reference: datetime错误求助
针对:compileKotlinJs任务失败、抛出Unresolved reference: datetime,且已添加kotlinx-datetime依赖的场景,按以下优先级排查修复:
检查依赖配置的作用域是否正确
多平台项目禁止在顶层dependencies块直接声明该依赖,必须对应到具体源集。如果是在通用逻辑中引用datetime,依赖需要加在commonMain源集的依赖块内;如果仅在JS侧代码使用,要加在jsMain源集下。正确配置参考:kotlin { js { browser() // 按实际场景替换为nodejs() } sourceSets { val commonMain by getting { dependencies { implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.1.1") } } } }纯Kotlin/JS单平台项目要确认依赖没有误写到
buildscript的dependencies块内,必须放在项目级的dependencies块下。校验Kotlin插件与依赖版本的兼容性
kotlinx-datetime:0.1.1仅兼容Kotlin 1.4.0~1.4.30版本。如果项目使用的Kotlin插件版本≥1.5,该版本的datetime库无法被JS编译器正常识别,需要升级kotlinx-datetime到对应匹配版本:Kotlin 1.5+对应0.2.x版本,Kotlin 1.8+对应0.4.x以上版本。清理缓存重新拉取依赖
本地Gradle缓存损坏会导致依赖存在但编译器无法识别,执行以下命令清理重建:./gradlew --stop ./gradlew clean compileKotlinJs --refresh-dependenciesWindows环境将
./gradlew替换为gradlew.bat即可。排查依赖冲突
执行依赖查看命令确认JS编译类路径下的datetime版本是否唯一:./gradlew dependencies --configuration jsCompileClasspath如果存在其他依赖引入了不同版本的kotlinx-datetime,添加版本强制统一规则即可:
configurations.all { resolutionStrategy.force("org.jetbrains.kotlinx:kotlinx-datetime:0.1.1") }同步IDE索引
如果IDE内代码无红色报错但命令行编译失败,或IDE报错但命令行编译正常,点击Gradle面板的刷新按钮重新同步项目,确保IDE索引和实际构建配置一致。
内容的提问来源于stack exchange,提问作者Aadi

