【问题标题】:How to configure create-react-kotlin-app in order to get kotlinx.serialization working如何配置 create-react-kotlin-app 以使 kotlinx.serialization 工作
【发布时间】:2019-05-04 06:49:09
【问题描述】:

我一直在尝试使用 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")

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

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

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

编译失败。

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

npm 错误!代码生命周期

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

无法将 Pu…h 类的无参数序列化程序定位为列表,请明确提供序列化程序。

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

感谢您的帮助

【问题讨论】:

  • 你能展示产生这个问题的代码吗?
  • 您究竟是如何“将它定位在 nodeJS 依赖项旁边”的?我现在也有同样的困难,我从 maven 得到的东西的结构与“node_modules”中的目录不同。

标签: javascript reactjs serialization kotlin compiler-errors


【解决方案1】:

好的,我想我成功了。

以下是我记得的步骤:

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

  • 已将kotlinx-serialization-runtime-js.jskotlinx-serialization-runtime-js.js.map 复制到node-modules/.cache/kotlin-webpack

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

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

【讨论】:

    猜你喜欢
    • 2018-10-06
    • 2019-02-09
    • 2020-02-17
    • 2022-08-20
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    相关资源
    最近更新 更多