鉴于此代码,我应该将 file.json 放在哪里才能在运行时中找到?
// path: src/main/kotlin/Server.kt
fun main() {
val serviceAccount = require("file.json")
}
我尝试将它放在 src/main/resources/ 下,但没有运气。我还使用 Gradle 将 kotlin 编译为带有kotlin2js
插件的 js。
鉴于此代码,我应该将 file.json 放在哪里才能在运行时中找到?
// path: src/main/kotlin/Server.kt
fun main() {
val serviceAccount = require("file.json")
}
我尝试将它放在 src/main/resources/ 下,但没有运气。我还使用 Gradle 将 kotlin 编译为带有kotlin2js
插件的 js。
假设 Kotlin 编译器将创建的 JS 文件(例如server.js
)放入默认位置 atbuild/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 )
在我们的例子__dirname
中是build/classes/kotlin/main
所以正确的require语句是:
val serviceAccount = js("require('../../../resources/main/file.json')")
或者如果require
被定义为问题中的 Kotlin 函数
val serviceAccount = require("../../../resources/main/file.json")
js("require('./file.json')")
如果您没有require
Kotlin 中的函数的导入,则可以使用。结果将是dynamic
,因此您可以将其转换为Map
.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/js.html