Matt Nelson
03/02/2023, 1:08 AMwasm
target to my project but tests keep failing with this cryptic error. It's a pure kotlin project.
Anyone see this before or know what's happening?
> Task :library:encoding-core:wasmBrowserTest
Error [ERR_REQUIRE_ESM]: require() of ES Module /home/administrator/Projects/personal/components/encoding/build/js/packages/encoding-encoding-core-wasm-test/kotlin/encoding-encoding-core-wasm-test.mjs not supported.
Instead change the require of /home/administrator/Projects/personal/components/encoding/build/js/packages/encoding-encoding-core-wasm-test/kotlin/encoding-encoding-core-wasm-test.mjs to a dynamic import() which is available in all CommonJS modules.
at Object.<anonymous> (/home/administrator/Projects/personal/components/encoding/build/js/packages/encoding-encoding-core-wasm-test/adapter-nodejs.js:2:18)
at async Promise.all (index 0)
at async formattedImport (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/mocha/lib/nodejs/esm-utils.js:7:14)
at async Object.exports.requireOrImport (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/mocha/lib/nodejs/esm-utils.js:38:28)
at async Object.exports.loadFilesAsync (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/mocha/lib/nodejs/esm-utils.js:91:20)
at async singleRun (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/mocha/lib/cli/run-helpers.js:125:3)
at async Object.exports.handler (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/mocha/lib/cli/run.js:370:5)
> Task :library:encoding-core:wasmD8Test FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':library:encoding-core:wasmD8Test'.
> command '/home/administrator/.gradle/d8/v8-linux64-rel-10.2.9/d8' exited with errors (exit code: 1)
Svyatoslav Kuzmich [JB]
03/02/2023, 6:57 AMmocha
, a Node.js and browser testing library. But it runs in a d8
a bare-bones V8 JS shell, where mocha is not supported. Lack of require()
was the first error it encountered, but it probably will not be the only one.
Usually, when running wasmD8Test
, Kotlin/Wasm uses uses built-in test runner without Mocha. If you haven’t configured anything specifically around d8
and mocha
in your build, this error is not expected, and i would like to see more information about your build scripts to solve this problem.useMocha
specified in a d8 testTask here: https://github.com/05nelsonm/gradle-kmp-configuration-plugin/blob/8f4d7b51b2e9303e[…]configuration/extension/container/target/TargetWasmContainer.ktMatt Nelson
03/02/2023, 10:12 AMbrowser { testTask { useMocha { timeout = "30s" } } }
nodejs { testTask { useMocha { timeout = "30s" } } }
d8()
yielded the same error.
Tried simply expressing
browser()
nodejs()
d8()
and got this
> Task :library:encoding-core:wasmBrowserTest
Module parse failed: The top-level-await experiment is not enabled (set experiments.topLevelAwait: true to enabled it)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See <https://webpack.js.org/concepts#loaders>
Error: The top-level-await experiment is not enabled (set experiments.topLevelAwait: true to enabled it)
at /home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/dependencies/HarmonyDetectionParserPlugin.js:54:11
at Hook.eval [as call] (eval at create (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/tapable/lib/HookCodeFactory.js:19:10), <anonymous>:7:16)
at Hook.CALL_DELEGATE [as _call] (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/tapable/lib/Hook.js:14:14)
at JavascriptParser.walkAwaitExpression (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:2342:29)
at JavascriptParser.walkExpression (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:2272:10)
at JavascriptParser.walkVariableDeclaration (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:2126:33)
at JavascriptParser.walkStatement (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:1620:10)
at JavascriptParser.walkStatements (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:1481:9)
at /home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:1655:9
at JavascriptParser.inBlockScope (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:3113:3)
Error: The top-level-await experiment is not enabled (set experiments.topLevelAwait: true to enabled it)
at /home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/dependencies/HarmonyDetectionParserPlugin.js:54:11
at Hook.eval [as call] (eval at create (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/tapable/lib/HookCodeFactory.js:19:10), <anonymous>:7:16)
at Hook.CALL_DELEGATE [as _call] (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/tapable/lib/Hook.js:14:14)
at JavascriptParser.walkAwaitExpression (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:2342:29)
at JavascriptParser.walkExpression (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:2272:10)
at JavascriptParser.walkVariableDeclaration (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:2126:33)
at JavascriptParser.walkStatement (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:1620:10)
at JavascriptParser.walkStatements (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:1481:9)
at /home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:1655:9
at JavascriptParser.inBlockScope (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:3113:3)
at /tmp/_karma_webpack_399976/commons.js:95:1
Error: The top-level-await experiment is not enabled (set experiments.topLevelAwait: true to enabled it)
at /home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/dependencies/HarmonyDetectionParserPlugin.js:54:11
at Hook.eval [as call] (eval at create (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/tapable/lib/HookCodeFactory.js:19:10), <anonymous>:7:16)
at Hook.CALL_DELEGATE [as _call] (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/tapable/lib/Hook.js:14:14)
at JavascriptParser.walkAwaitExpression (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:2342:29)
at JavascriptParser.walkExpression (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:2272:10)
at JavascriptParser.walkVariableDeclaration (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:2126:33)
at JavascriptParser.walkStatement (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:1620:10)
at JavascriptParser.walkStatements (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:1481:9)
at /home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:1655:9
at JavascriptParser.inBlockScope (/home/administrator/Projects/personal/components/encoding/build/js/node_modules/webpack/lib/javascript/JavascriptParser.js:3113:3)
at ./kotlin/encoding-encoding-core-wasm-test.mjs (/tmp/_karma_webpack_399976/commons.js:95:7)
at __webpack_require__ (/tmp/_karma_webpack_399976/runtime.js:23:41)
at ./adapter-browser.js (/tmp/_karma_webpack_399976/commons.js:57:18)
at __webpack_require__ (/tmp/_karma_webpack_399976/runtime.js:23:41)
at __webpack_exec__ (adapter-browser.3388599486.js:4:48)
at adapter-browser.3388599486.js:5:55
at __webpack_require__.O (/tmp/_karma_webpack_399976/runtime.js:57:23)
at adapter-browser.3388599486.js:6:56
at webpackJsonpCallback (/tmp/_karma_webpack_399976/runtime.js:105:39)
at adapter-browser.3388599486.js:2:117
java.lang.IllegalStateException: command '/home/administrator/.gradle/nodejs/node-v16.13.0-linux-x64/bin/node' exited with errors (exit code: 1)
> Task :library:encoding-core:wasmD8Test FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':library:encoding-core:wasmD8Test'.
> command '/home/administrator/.gradle/d8/v8-linux64-rel-10.2.9/d8' exited with errors (exit code: 1)
Svyatoslav Kuzmich [JB]
03/02/2023, 10:32 AMplugins.withType<org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin>().configureEach {
extensions.configure<org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension> {
nodeDownloadBaseUrl = "<https://nodejs.org/download/v8-canary>"
nodeVersion = "20.0.0-v8-canary2022112061c569ba0d"
}
}
tasks.withType<org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask>().configureEach {
args.add("--ignore-engines")
}
But it would apply this version to the whole project, including K/JS./gradlew :library:encoding-core:wasmD8Test --info
should show the d8
command to run it manually.
I would be happy to look at it if you can share a code that reproduces the problem.Matt Nelson
03/02/2023, 11:46 AMissue/97-enable-wasm
Svyatoslav Kuzmich [JB]
03/02/2023, 1:27 PMMatt Nelson
03/02/2023, 1:28 PMgradle/libs.versions.toml
Svyatoslav Kuzmich [JB]
03/02/2023, 1:39 PM:library:encoding-core:wasmD8Test
now passes all tests!Matt Nelson
03/02/2023, 1:41 PM1.8.20-Beta
with the js
target showing that testTask
function is not found
Unable to find method ''void org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBrowserDsl.testTask(kotlin.jvm.functions.Function1)''
wasmD8Test
run passes. Looks like I'll wait for 1.8.20
release to enable support for it.
Thanks!Svyatoslav Kuzmich [JB]
03/02/2023, 1:56 PMMatt Nelson
03/02/2023, 2:06 PMd8
when someone depends on this library where they express browser
and nodejs
for their wasm
target?
I know the js
target if you only express nodejs
and someone depending on the library has browser
and nodejs
expressed, there is a compatibility error b/c of metadata incompatibility.
{
"target": "org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget",
"platformType": "js",
"extras": {
"js": {
"isBrowserConfigured": true,
"isNodejsConfigured": true
}
}
},
Svyatoslav Kuzmich [JB]
03/02/2023, 2:24 PM