Javascript 如何配置create react kotlin应用程序以使kotlinx.serialization正常工作
我一直在尝试使用create-react-Kotlin应用程序使kotlinx.serialization库与Kotlin/JS一起工作 然而,我不太熟悉巨大的节点和网页包混乱。 我做了以下工作: 1) 从maven存储库a下载了kotlinx.serialization库,并将其定位在nodeJS依赖项旁边,因为到目前为止没有任何npm模块用于此 2) 修改了节点\u modules/@jetbrains/kotlin webpack plugin/plugin.js以编译我的库,特别是我将这一行添加到prepareLibraries函数中:Javascript 如何配置create react kotlin应用程序以使kotlinx.serialization正常工作,javascript,reactjs,serialization,kotlin,compiler-errors,Javascript,Reactjs,Serialization,Kotlin,Compiler Errors,我一直在尝试使用create-react-Kotlin应用程序使kotlinx.serialization库与Kotlin/JS一起工作 然而,我不太熟悉巨大的节点和网页包混乱。 我做了以下工作: 1) 从maven存储库a下载了kotlinx.serialization库,并将其定位在nodeJS依赖项旁边,因为到目前为止没有任何npm模块用于此 2) 修改了节点\u modules/@jetbrains/kotlin webpack plugin/plugin.js以编译我的库,特别是我将这
opts.libraries.push(opts.packagesContents[0]["_where"]+"/lib/kotlinx-serialization-runtime-js/build/classes/main/kotlinx-serialization-runtime-js.js")
3) 修改了节点/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运行dev服务器时,它会按照预期进行编译和运行,但是当我运行npm run build时,我得到了以下错误:
正在创建优化的生产构建
未能编译
警告:此版本的编译器不支持标志:-
Xplugin=/home/Project/archetype frontend kotlin/node_modules/kotlin compiler/lib/kotlinx-serialization-compiler-plugin.jar
npm错误!代码失效循环
当然,当我删除-Xplugin参数时,应用程序会抛出如下异常:
找不到类Pu…h的无参数序列化程序作为列表,请显式提供序列化程序
(有一个与此相关的GH问题)
谢谢你的帮助好的,我想我成功了 以下是我记忆中的步骤:
- 按照中的建议,did
npm弹出了
并添加了
到plugin:require.resolve('kotlin-compiler/lib/kotlinx serialization compiler plugin.jar'),
文件中(在webpack kotlin-*.js
之后)new KotlinWebpackPlugin
- 从maven()下载编译的运行时,并将其解压缩到
节点模块/kotlinx序列化运行时js
- 通过添加库路径对kotlin compiler.js进行黑客攻击(一定有更好的方法!):
options.libraries.join(isWindows?;”:“:”)+“:/node_modules/kotlinx序列化运行时js/kotlinx序列化运行时js.meta.js”
- 将
和kotlinx序列化运行时js.js
复制到kotlinx序列化运行时js.js.map
node modules/.cache/kotlin webpack
纱线开始之后
似乎能够编译一些使用kotlinx序列化的测试代码
,但是Idea无法找到kotlinx.serialization
模块的来源
我希望这个答案能启发那些愿意反向工程这个构建系统的人,以便做出更好的修复。你能展示产生这个问题的代码吗?你到底是如何“将它定位在nodeJS依赖项之外”的?我现在也有同样的挣扎,我从maven那里得到的东西与“node_模块”中的目录有不同的结构。
options.libraries.join(isWindows ? ';' : ':') + ":<absolute_path_to_project>/node_modules/kotlinx-serialization-runtime-js/kotlinx-serialization-runtime-js.meta.js"