我一直试图在PayPal下档库周围创建一个Kotlin包装器,但没有成功。我可以在Kotlin生态系统之外工作得很好,但是当我尝试将它集成到Kotlin JS应用程序时,我没有运气。
我已将所有财产剥离如下:-
@file:JsModule("downshift")
package components.downshift
import react.Component
import react.RProps
import react.RState
import react.ReactElement
@JsName("Downshift")
external class DownshiftComponent : Component<RProps, RState> {
override fun render(): ReactElement?
}然后在React应用程序的呈现方法中添加以下内容:
child<RProps, DownshiftComponent> { }JSX中的等价物在自定义组件中工作(尽管不呈现任何东西!)
render() {
return (
<Downshift/>
)
}我最后犯的错误如下:
TypeError:无法读取未定义的属性“$metadata$”
getOrCreateKClass
node_modules/kotlin/kotlin.js:27368
27365 | if (jClass === String) {
27366 | return PrimitiveClasses_getInstance().stringClass;
27367 | }
> 27368 | var metadata = jClass.$metadata$;
| ^ 27369 | if (metadata != null) {
27370 | if (metadata.$kClass$ == null) {
27371 | var kClass = new SimpleKClassImpl(jClass);对我来说,这意味着无法找到来自“下移”包的类(因此没有定义)。如果是这种情况,那么导入下行转移的正确方法是什么,这样Kotlin就可以使用它了?
我已经使用npm安装了下档模块。
npm install downsift --save它显示在我的package.json文件中:-
{
"name": "pop-up-shop-ui",
"version": "0.1.0",
"private": true,
"dependencies": {
"@material-ui/core": "^3.8.2",
"@material-ui/icons": "^3.0.2",
"@material-ui/lab": "^3.0.0-alpha.28",
"d3-shape": "^1.2.2",
"downshift": "^3.2.0",
"prop-types": "latest",
"react": "^16.7.0",
"react-autosuggest": "^9.4.3",
"react-currency-format": "^1.0.0",
"react-dom": "^16.7.0",
"react-google-charts": "^3.0.10",
"react-router": "^4.3.1",
"react-router-dom": "^4.3.1",
"react-scripts": "2.1.3"
},
"devDependencies": {
"react-scripts-kotlin": "3.0.3"
},
"scripts": {
"start": "react-scripts-kotlin start",
"build": "react-scripts-kotlin build",
"eject": "react-scripts-kotlin eject",
"gen-idea-libs": "react-scripts-kotlin gen-idea-libs",
"get-types": "react-scripts-kotlin get-types --dest=src/types",
"postinstall": "npm run gen-idea-libs"
}
}以下是使用react/jsx组件时的标准导入
import Downshift from "downshift";它与@file:JsModule("downshift")和@JsName("Downshift")注释相匹配。
如果你能帮助我完成这项工作,我将不胜感激。
发布于 2019-06-25 06:38:40
几天前我遇到了这个问题。这个错误非常令人困惑,但经过深入研究,我发现问题源于未定义的类型(在您的例子中是Downshift)。您可以通过在初始化react之前编写类似于prinltn(DownshiftComponent::class)的东西来轻松地捕获它。
问题可能在于构建。不要忘记在其中添加npm依赖项。此外,有时还会出现增量构建故障,您需要进行干净的构建才能看到更改。
https://stackoverflow.com/questions/54385291
复制相似问题