在kotlin js中加载资源文件(json)
给定这段代码,我应该将file.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
// 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