Kotlin JavaScript:在 React 应用程序中使用的捆绑包
Kotlin JavaScript: Bundle for usage in React app
我有一个 Kotlin JS 项目,我想导出它以便它可以在非 Kotlin React 应用程序中使用。
我尝试过的事情(假设模块名为 exportedlib
):
- 将其导出为 CommonJS 模块,使用
gradlew compileKotlinJs
进行编译。
然后我将 build/js/packages/exportedlib/kotlin/exportedlib.js
复制到 React 应用程序并在 App.js 中使用 import exportedlib from './exportedlib'
导入它。
当使用 npm start
编译时,我收到此错误消息:Module not found: Can't resolve 'kotlin'
- 然后我还将 kotlin.js 从
build/js/packages_imported/kotlin/1.3.72/kotlin.js
导入到 React 应用程序中。
然后我收到错误信息:
./src/kotlin.js
Line 2:39: 'define' is not defined no-undef
- 如上所述没有用 我还在 build.gradle 中添加了浏览器目标并用
gradlew browserDistribution
导出了它。
然后我从 npm 收到这些错误消息:
./src/exportedlib.js
Line 1:1: Expected an assignment or function call and instead saw an expression no-unused-expressions
Line 1:112: 'define' is not defined no-undef
Line 1:123: 'define' is not defined no-undef
Line 1:500: Expected an assignment or function call and instead saw an expression no-unused-expressions
// ... a lot of other "Expected an assignment or function call and instead saw an expression" error messages
谁能帮我导出一个 Kotlin JS 库,以便它可以在 React 应用程序中使用?
这是我的 build.gradle:
plugins {
id 'org.jetbrains.kotlin.js' version '1.3.72'
}
repositories {
mavenCentral()
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-js"
testImplementation "org.jetbrains.kotlin:kotlin-test-js"
}
kotlin.target.nodejs { }
// added as above didn't work
kotlin.target.browser { }
compileKotlinJs.kotlinOptions.moduleKind = "commonjs"
更新
的答案在使用 ./gradlew compileProductionExecutableKotlinJs
导出时对我有用,但仅适用于具有实验性 IR 后端的 Kotlin 1.4 M2。
任何适用于 Kotlin 1.3 的解决方案都将不胜感激。
您可以尝试使用 1.4-M2
版本的 Kotlin 和 IR 后端。
您需要更改 build.gradle
文件:
plugins {
id 'org.jetbrains.kotlin.js' version '1.4-M2'
}
repositories {
mavenCentral()
maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-js"
testImplementation "org.jetbrains.kotlin:kotlin-test-js"
}
kotlin {
js(IR) {
useCommonJs()
browser {}
nodejs {}
binaries.executable()
compilations.all {
kotlinOptions.moduleKind = "commonjs"
}
}
}
和settings.gradle:
pluginManagement {
repositories {
maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
mavenCentral()
maven { url 'https://plugins.gradle.org/m2/' }
}
}
rootProject.name = 'exportedlib'
编译 JS 后只需将 exportedlib.js
添加到您的 React 项目中。
注意:Kotlin 1.4-M2
和 IR 后端不稳定。
我有一个 Kotlin JS 项目,我想导出它以便它可以在非 Kotlin React 应用程序中使用。
我尝试过的事情(假设模块名为 exportedlib
):
- 将其导出为 CommonJS 模块,使用
gradlew compileKotlinJs
进行编译。
然后我将 build/js/packages/exportedlib/kotlin/exportedlib.js
复制到 React 应用程序并在 App.js 中使用 import exportedlib from './exportedlib'
导入它。
当使用 npm start
编译时,我收到此错误消息:Module not found: Can't resolve 'kotlin'
- 然后我还将 kotlin.js 从
build/js/packages_imported/kotlin/1.3.72/kotlin.js
导入到 React 应用程序中。
然后我收到错误信息:
./src/kotlin.js
Line 2:39: 'define' is not defined no-undef
- 如上所述没有用 我还在 build.gradle 中添加了浏览器目标并用
gradlew browserDistribution
导出了它。
然后我从 npm 收到这些错误消息:
./src/exportedlib.js
Line 1:1: Expected an assignment or function call and instead saw an expression no-unused-expressions
Line 1:112: 'define' is not defined no-undef
Line 1:123: 'define' is not defined no-undef
Line 1:500: Expected an assignment or function call and instead saw an expression no-unused-expressions
// ... a lot of other "Expected an assignment or function call and instead saw an expression" error messages
谁能帮我导出一个 Kotlin JS 库,以便它可以在 React 应用程序中使用?
这是我的 build.gradle:
plugins {
id 'org.jetbrains.kotlin.js' version '1.3.72'
}
repositories {
mavenCentral()
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-js"
testImplementation "org.jetbrains.kotlin:kotlin-test-js"
}
kotlin.target.nodejs { }
// added as above didn't work
kotlin.target.browser { }
compileKotlinJs.kotlinOptions.moduleKind = "commonjs"
更新
./gradlew compileProductionExecutableKotlinJs
导出时对我有用,但仅适用于具有实验性 IR 后端的 Kotlin 1.4 M2。
任何适用于 Kotlin 1.3 的解决方案都将不胜感激。
您可以尝试使用 1.4-M2
版本的 Kotlin 和 IR 后端。
您需要更改 build.gradle
文件:
plugins {
id 'org.jetbrains.kotlin.js' version '1.4-M2'
}
repositories {
mavenCentral()
maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-js"
testImplementation "org.jetbrains.kotlin:kotlin-test-js"
}
kotlin {
js(IR) {
useCommonJs()
browser {}
nodejs {}
binaries.executable()
compilations.all {
kotlinOptions.moduleKind = "commonjs"
}
}
}
和settings.gradle:
pluginManagement {
repositories {
maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
mavenCentral()
maven { url 'https://plugins.gradle.org/m2/' }
}
}
rootProject.name = 'exportedlib'
编译 JS 后只需将 exportedlib.js
添加到您的 React 项目中。
注意:Kotlin 1.4-M2
和 IR 后端不稳定。