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

问题描述 投票:0回答:2

鉴于此代码,我应该在哪里放置file.json以便能够在运行时中找到?

// path: src/main/kotlin/Server.kt
fun main() {
  val serviceAccount = require("file.json")
}

我试过把它放在src / main / resources /下没有运气。我还使用Gradle使用kotlin2js插件将kotlin编译为js。

kotlin kotlin-multiplatform kotlin-js-interop kotlin-js kotlin2js
2个回答
0
投票

如果你没有在Kotlin中输入js("require('./file.json')")函数,你可以使用require。结果将是dynamic,所以你可以把它投到Map

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/js.html


0
投票

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

而且你通过执行server.js来运行node build/classes/kotlin/main/server.js

根据NodeJS文档:

可以使用相对路径(例如./,。/ foo,。/ bar / baz,.. / foo)导入本地模块和JSON文件,该路径将针对__dirname(如果已定义)命名的目录或当前工作目录。 (https://nodejs.org/api/modules.html#modules_require_id

在我们的例子中,__dirnamebuild/classes/kotlin/main

所以正确的require语句是:

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

或者如果require被定义为问题中的Kotlin函数

val serviceAccount = require("../../../resources/main/file.json") 
© www.soinside.com 2019 - 2024. All rights reserved.