kotlin - Kotiln/JS 中不可用的依赖项
问题描述
我正在尝试在 Kotlin/JS 项目中使用名为KSVG的库。维护者已尝试设置 K/JS 支持,但无法正常工作。在 IntelliJ 中,我将以下 repo 和依赖项添加到我的build.gradle.kts
:
repositories {
jcenter()
}
dependencies {
implementation(kotlin("stdlib-js"))
implementation("com.github.nwillc", "ksvg", "2.2.0")
}
没有显示错误,IDE似乎可以正确加载依赖项,但它根本没有在我的代码库中公开。有没有办法查看为什么这种依赖会失败?库是否存在明显的问题,阻止它在 K/JS 中工作?
解决方案
K/JS 依赖类似于 K/JVM 依赖。通过将它们添加到您使用的 gradle 项目并编译它们。但是要运行项目,您需要运行时依赖项。K/JVM 中的默认run
任务会自动将运行时依赖项添加到类路径中。但是如果你想创建一个罐子,你必须手动执行此操作或创建一个胖罐子。
在 K/JS(对于浏览器,不确定 nodejs)中,它们不是包含运行时依赖项的默认运行任务。您必须手动添加它们。他们有两种方法来做到这一点。
runtimeClasspath
从任务中手动 grep 依赖 js 文件- 使用 webpack 构建(类似于 fat jar 方法)
这是 webpack 构建的一个工作示例。该build
任务在 处创建人工制品./build/distributions/
。(他们也是run
在端口 8080 启动服务器的任务)
构建.gradle.kts
plugins {
kotlin("js") version "1.3.72"
}
repositories {
mavenCentral()
maven("https://dl.bintray.com/nwillc/maven")
}
dependencies {
implementation(kotlin("stdlib-js"))
testImplementation(kotlin("test-js"))
implementation("com.github.nwillc:ksvg-js:3.0.0")
}
kotlin.target.browser {}
主文件
import com.github.nwillc.ksvg.elements.SVG
import kotlin.browser.document
fun main() {
val svg = SVG.svg(false) {
circle {
cssClass = "black-stroke"
id = "face"
cx = "180"
cy = "140"
r = "80"
fill = "#aa450f"
}
}
document.write(svg.toString())
}
推荐阅读
- javascript - 使用 Fetch API,处理错误时如何访问 JSON 数据
- android - 当活动首次加载时,TransitionManager.beginDelayedTransition 没有动画
- vue.js - 更好的方法处理:“不要在突变处理程序之外改变 vuex 存储状态”错误
- javascript - Javascript将对象键移动到父对象键
- laravel - 无法使用 nginx 下载文件 laravel(失败 - 网络错误)
- couchbase - 在 Spring-data-Couchbase 中将 Document 直接保存为 id 的值
- c# - 如何使用c#代码在linux容器上执行sqlplus命令
- python - 在堆积条形图上适当定位注释
- powershell - 修剪文件名以使其少于 100 个字符
- ruby - 在 ruby 中确保只有某些方法可用