Kotlin多平台JS项目配置kotlinNpmInstall任务时报任务不存在错误
问题原因
- 任务注册时序问题:Kotlin JS/多平台插件的
kotlinNpmInstall任务属于延迟注册的懒加载任务,直接在构建脚本顶层调用tasks.named("kotlinNpmInstall")时,Kotlin插件还未完成任务注册流程,因此会抛出任务不存在的异常。后续执行./gradlew tasks时插件已完成全量初始化,所以可以正常看到该任务。 - 版本兼容问题:你使用的Kotlin 1.5.30属于较旧的迭代版本,本身存在插件任务注册时序不稳定的已知问题,加上构建提示的Kotlin插件版本不兼容的警告,进一步加剧了任务识别异常的概率。
解决方法
- 调整任务配置的触发时机,优先使用类型匹配的方式配置任务,避免硬编码任务名的时序问题,替换原有配置为以下写法:
// 匹配所有KotlinNpmInstallTask类型的任务,无需关心注册时机和任务名 tasks.withType<org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask>().configureEach { // 此处填写你原本要对kotlinNpmInstall任务添加的配置逻辑 }
如果一定要按任务名配置,可以等Kotlin JS插件加载完成后再执行配置逻辑:
pluginManager.withPlugin("org.jetbrains.kotlin.js") { tasks.named("kotlinNpmInstall").configure { // 原有配置逻辑 } }
- 修复构建警告:
- 将构建脚本中用到的
experimentalAnnotationsInUse属性替换为提示的optInAnnotationsInUse,避免后续版本升级后属性失效。 - 统一根项目、所有子模块、BuildSrc目录下的Kotlin插件版本,全部对齐为1.5.30,消除插件版本不兼容的警告。
- 将构建脚本中用到的
内容的提问来源于stack exchange,提问作者Nikola-Milovic
相关产品推荐
相关产品推荐

