Предполагая, что компилятор Kotlin помещает созданный файл JS (скажем, server.js
) в расположение по умолчанию в build/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
Таким образом, правильное утверждение требует:
val serviceAccount = js("require('../../../resources/main/file.json')")
или если require
определено как функция Котлина, как в вопросе
val serviceAccount = require("../../../resources/main/file.json")