Kotlin 多平台 Gradle 任务 "jsRun" 出现错误 "[webpack-cli] TypeError: cli.isMultipleCompiler is not a function"。

3

我有一个包含JVM和JS的Kotlin多平台项目。当执行jsRun gradle任务来启动webpack服务器时,它会失败并显示以下错误信息:

Waiting for changes to input files of tasks... (ctrl-d then enter to exit)
[webpack-cli] TypeError: cli.isMultipleCompiler is not a function
[webpack-cli] TypeError: cli.isMultipleCompiler is not a function
    at Command.<anonymous> (C:\MyProject\build\js\node_modules\@webpack-cli\serve\lib\index.js:146:35)
    at async Promise.all (index 1)
    at async Command.<anonymous> (C:\MyProject\build\js\node_modules\webpack-cli\lib\webpack-cli.js:1687:7)

编译成功,我可以通过Ktor提供的项目服务,但问题似乎出在webpack开发服务器上。

kotlin gradle插件生成的package.json似乎使用了webpack-cli 4.9.0

{
  "name": "MyProject-client",
  "version": "1.0.0",
  "main": "kotlin/MyProject-client.js",
  "devDependencies": {
    "sass-loader": "13.0.0",
    "sass": "1.53.0",
    "style-loader": "3.3.1",
    "css-loader": "6.7.1",
    "resolve-url-loader": "5.0.0",
    "webpack": "5.57.1",
    "webpack-cli": "4.9.0",
    "format-util": "1.0.5",
    "source-map-loader": "3.0.0",
    "webpack-dev-server": "4.3.1",
    "dukat": "0.5.8-rc.4"
  },
  "dependencies": {},
  "peerDependencies": {},
  "optionalDependencies": {},
  "bundledDependencies": []
}

这篇文章指出这是webpack-cli 4.9.0的一个 bug,并建议升级到 4.10.0。我不知道 Kotlin/JS 中如何更改 webpack 版本。

1个回答

6
这应该添加到受影响的项目的build.gradle.kts中,以强制使用webpack-cli版本。这是一个解决办法,直到Kotlin团队更新硬编码版本。
// Fixes webpack-cli incompatibility by pinning the newest version.
rootProject.extensions.configure<org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension> {
    versions.webpackCli.version = "4.10.0"
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接