如何配置create-react-kotlin-app以使kotlinx.serialization工作

Kub*_*lka 5 javascript serialization compiler-errors kotlin reactjs

我一直在尝试使用create-react-kotlin-app将kotlinx.serialization库与Kotlin / JS一起使用

但是,我对巨大的nodeJS和webpack混乱不太熟悉。我做了以下事情:

1)从maven存储库中下载了kotlinx.serialization库,该库位于nodeJS依赖项旁边,因为到目前为止还没有任何npm模块。

2)修改了node_modules/@jetbrains/kotlin-webpack-plugin/plugin.js以便编译我的库,特别是我将此行添加到prepareLibraries函数中:

opts.libraries.push(opts.packagesContents[0]["_where"]+"/lib/kotlinx-serialization-runtime-js/build/classes/main/kotlinx-serialization-runtime-js.js")
Run Code Online (Sandbox Code Playgroud)

3)修改了node_modules / kotlin-compiler / bin / kotlinc中的最后一行,以启用序列化编译器插件:

${JAVACMD:=java}" $JAVA_OPTS "${java_args[@]}" -cp "${kotlin_app[@]}" "${kotlin_args[@]}" -Xplugin=$KOTLIN_HOME/lib/kotlinx-serialization-compiler-plugin.jar
Run Code Online (Sandbox Code Playgroud)

问题是,当我使用npm start运行开发服务器时,它会按预期进行编译和运行,但是当我运行npm run build时,出现以下错误:

创建优化的生产版本...

编译失败。

警告:此版本的编译器不支持该标志:-Xplugin = / home / Project / archetype-frontend-kotlin / node_modules / kotlin-compiler / lib / kotlinx-serialization-compiler-plugin.jar

npm ERR!代码ELIFECYCLE

当然,当我删除-Xplugin参数时,应用程序将抛出如下异常:

找不到清单Pu.h的无参数序列化器作为列表,请明确提供序列化器。

(GH上有一个与此https://github.com/Kotlin/kotlinx.serialization/issues/278相关的问题)

谢谢你的帮助

Equ*_*oid 0

好吧,我想我成功了。

以下是我记得的步骤:

      options.libraries.join(isWindows ? ';' : ':') + ":<absolute_path_to_project>/node_modules/kotlinx-serialization-runtime-js/kotlinx-serialization-runtime-js.meta.js"

Run Code Online (Sandbox Code Playgroud)
  • 复制kotlinx-serialization-runtime-js.jskotlinx-serialization-runtime-js.js.mapnode-modules/.cache/kotlin-webpack.

之后yarn start似乎能够编译一些使用 的测试代码kotlinx-serialization,但是,Idea 无法找到kotlinx.serialization模块来自哪里。

我希望这个答案能够激励那些愿意对这个构建系统进行逆向工程以做出更好修复的人。