6

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

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

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

4

2 回答 2

4

假设 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") 
于 2019-03-27T07:12:20.247 回答
0

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

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

于 2019-03-11T23:01:52.277 回答