我一直在尝试使用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参数时,应用程序将抛出如下异常:
(关于GH的问题与此https://github.com/Kotlin/kotlinx.serialization/issues/278相关)
谢谢你的帮助
最佳答案
好吧,我想我设法做到了。
我记得它们的步骤如下:
如https://youtrack.jetbrains.com/issue/CRKA-84中建议的
npm eject
并将plugin: require.resolve('kotlin-compiler/lib/kotlinx-serialization-compiler-plugin.jar'),
添加到webpack-kotlin-*.js
文件中(在new KotlinWebpackPlugin
之后)。 node-modules/kotlinx-serialization-runtime-js
kotlin-compiler.js
: options.libraries.join(isWindows ? ';' : ':') + ":<absolute_path_to_project>/node_modules/kotlinx-serialization-runtime-js/kotlinx-serialization-runtime-js.meta.js"
kotlinx-serialization-runtime-js.js
和kotlinx-serialization-runtime-js.js.map
复制到node-modules/.cache/kotlin-webpack
。 在此
yarn start
似乎能够编译一些使用kotlinx-serialization
的测试代码之后,Idea无法找到kotlinx.serialization
模块的来源。我希望这个答案能激发愿意反向构建此构建系统以进行更好修复的人。
关于javascript - 如何配置 create-react-kotlin-app 以使 kotlinx.serialization 工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53585910/