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

Kotlin/JS(IR):开启generateTypeScriptDefinitions()后package.json缺失types字段

解决Kotlin/JS IR目标下TypeScript定义未自动添加到package.json的问题

以下是几个排查和解决的方向:

1. 确认generateTypeScriptDefinitions()配置位置正确

确保该配置直接放在js(IR)代码块内,而非嵌套在browser或其他子块中:

kotlin {
    js(IR) {
        browser {
            // 你的浏览器相关配置
        }
        // 正确位置:直接在js(IR)块下声明
        generateTypeScriptDefinitions()
    }
}

2. 显式配置package.json的types字段

部分场景下Gradle不会自动注入types字段,需要手动在packageJson块中指定:

kotlin {
    js(IR) {
        browser { /* ... */ }
        generateTypeScriptDefinitions()
        
        packageJson {
            // 替换<your-project-name>为你的项目名称
            types = "build/js/packages/<your-project-name>/kotlin/<your-project-name>.d.ts"
            // 或者用任务输出动态获取路径,更灵活
            types = tasks.generateTypeScriptDefinitions.map { 
                it.outputFile.get().relativeTo(project.layout.buildDirectory).asFile.path 
            }
        }
    }
}

3. 确保构建任务依赖TypeScript定义生成任务

有时候jsBrowserProductionWebpack不会自动触发generateTypeScriptDefinitions,需要手动添加依赖:

tasks.jsBrowserProductionWebpack {
    dependsOn(tasks.generateTypeScriptDefinitions)
}

4. 检查Kotlin Gradle插件版本

旧版本的Kotlin插件(低于1.8.x)在IR目标下可能存在此问题,建议升级到最新稳定版,比如在settings.gradle.kts中:

pluginManagement {
    plugins {
        kotlin("js") version "1.9.20"
    }
}

5. 验证TypeScript定义文件是否生成

先手动执行generateTypeScriptDefinitions任务:

./gradlew generateTypeScriptDefinitions

然后查看build/js/packages/<your-project-name>/kotlin/目录下是否存在.d.ts文件。如果文件未生成,需先排查定义生成的问题(比如代码中存在不兼容TS定义的语法)。

内容的提问来源于stack exchange,提问作者Nestor Ledon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:02:37