我正在创建一个包含我们在我工作的公司上创建的公共组件的包,我们希望所有项目都可用。我们使用TypeScript,并将代码移动到一个新项目,我可以发布到npm并在我的一个项目的依赖项部分中添加该包。但是,当我尝试使用它时,我收到编译错误
error TS2604: JSX element type 'Loader' does not have any construct or call signatures.
我的代码(简化)如下所示:
import Loader from "my-common-components";
export class Contact extends React.Component<any, any> {
.
.
.
public render() {
this.state.loading) && <Loader />
<div>Hello World</div>
}
}
linter表示错误发生在<Loader />
部分,但此组件的代码(Contact
)没有变化,我只是将Loader
移开了项目并进入单独的包(my-common-components
)。
答案 0 :(得分:3)
事实证明,错误是当移动到单独的包时,我将组件添加到重新导出组件的索引文件中。但通过这样做,我使它不再是默认导出。后见之明的一种obvios。所以修复是用花括号包装组件名称的名称,以便导入实际的命名组件,如下所示:
import { Loader }from "my-common-components";
就是这样。我希望我能避免某人犯同样的错误,因为在搜索时我发现许多地方描述了同样的错误但是由不同的根引起,比如Typescript版本和错误的required
指令。