【发布时间】: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