我一直在尝试使用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之后)。
  • 从maven(https://dl.bintray.com/kotlin/kotlinx/org/jetbrains/kotlinx/kotlinx-serialization-runtime-js/0.9.0/)下载编译后的运行时,并将其解压缩到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.jskotlinx-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/

    10-10 18:25