在kotlin js中加载资源文件(json)

在kotlin js中加载资源文件(json),kotlin,kotlin-multiplatform,kotlin-js-interop,kotlin-js,kotlin2js,Kotlin,Kotlin Multiplatform,Kotlin Js Interop,Kotlin Js,Kotlin2js,给定这段代码,我应该将file.json放在哪里才能在运行时找到 // path: src/main/kotlin/Server.kt fun main() { val serviceAccount = require("file.json") } 我试着把它放在src/main/resources/下,但运气不好。我还使用Gradle使用kotlin2js插件将kotlin编译成js。如果您没有导入kotlin中的require函数,您可以使用js(“require('./file.js

给定这段代码,我应该将file.json放在哪里才能在运行时找到

// path: src/main/kotlin/Server.kt
fun main() {
  val serviceAccount = require("file.json")
}
我试着把它放在src/main/resources/下,但运气不好。我还使用Gradle使用
kotlin2js
插件将kotlin编译成js。

如果您没有导入kotlin中的
require
函数,您可以使用
js(“require('./file.json')”)
。结果将是
dynamic
,因此您可以将其强制转换为
Map


假设Kotlin编译器将创建的JS文件(比如
server.JS
)放在
build/classes/Kotlin/main
的默认位置,并将资源文件(
file.json
)放在
build/resources/main

通过执行
node build/classes/kotlin/main/server.js

根据NodeJS文档:

本地模块和JSON文件可以使用相对路径(例如../、../foo、../bar/baz、../foo)导入,该路径将根据_dirname(如果定义)命名的目录或当前工作目录解析。 ()

在我们的例子中,
\uu dirname
build/classes/kotlin/main

因此,正确的require语句是:

val serviceAccount = js("require('../../../resources/main/file.json')") 
或者如果
require
定义为问题中的Kotlin函数

val serviceAccount = require("../../../resources/main/file.json") 

我们将如何解决这个问题?我看到
require(“file.json”)
js(“require('file.json')”)
将生成相同的javascript代码:
require('file.json')
。问题仍然是在路径中找不到file.json。准确地说,例外情况是:
错误:找不到模块'file.json'
我想
/file.json
可能会有帮助,那么这段代码会在服务器端(NodeJS)还是客户端运行?@AlexanderEgger服务器端,因此路径(更容易)保证使用gradle只会没有帮助,也可以使用kotlin前端插件,在resources文件夹中找到file.json并观看神奇的发生。您需要类似于
json loader
plugin的东西,以便webpack用代码加载json