Dio*_*lor 5 kotlin kotlin-js-interop kotlin-multiplatform kotlin-js kotlin2js
鉴于此代码,我应该将 file.json 放在哪里才能在运行时中找到?
// path: src/main/kotlin/Server.kt
fun main() {
val serviceAccount = require("file.json")
}
Run Code Online (Sandbox Code Playgroud)
我试着把它放在 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 文档:
本地模块和 JSON 文件可以使用相对路径(例如 ./、./foo、./bar/baz、../foo)导入,该相对路径将根据 __dirname(如果已定义)或当前工作目录命名的目录进行解析。目录。 (https://nodejs.org/api/modules.html#modules_require_id)
在我们的例子中__dirname是build/classes/kotlin/main
所以正确的 require 语句是:
val serviceAccount = js("require('../../../resources/main/file.json')")
Run Code Online (Sandbox Code Playgroud)
或者 ifrequire被定义为 Kotlin 函数,如问题中所示
val serviceAccount = require("../../../resources/main/file.json")
Run Code Online (Sandbox Code Playgroud)
js("require('./file.json')")如果您在 Kotlin 中没有导入该函数,则可以直接使用require。结果将是dynamic,因此您可以将其投射到Map.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/js.html
| 归档时间: |
|
| 查看次数: |
1279 次 |
| 最近记录: |