reactjs - Webpacked 和转译的 JSX 导出不能在别处重新导入
问题描述
我正在尝试创建一个包含 JSX 的库,并使用带有 babel-loader 的 webpack 将其转换为可以重新导入并在其他地方使用的 CommonJS 模块。
其中一个 JSX 文件的示例如下所示
export const Item1 = (props) => (
<div id={props.id}>
</div>
);
还有一个主要的入口点 index.js 就是这样做的:
import Item1 from '../jsx/item1'
import Item2 from '../jsx/item2'
...etc
export { Item1, Item2 }
然后我的 webpack.config.js 有这个
configs.push({
entry: "./jsx/index.js",
output: {
path: path.join(__dirname, "dist"),
filename: "jsx.js"
},
resolve: {
extensions: [".js", ".jsx"]
},
module: {
rules: [
{
use: 'babel-loader',
test: /\.(js|jsx)?$/,
},
]
}
}
它在运行时会在 dist 中生成一个名为 的文件jsx.js
,据我所知,它看起来是正确的,它按预期包含了我所有的转译 JSX。我正在使用带有自动运行时的 @babel/react 预设。然后我将我main
的 in设置package.json
为指向这个 jsx.js 文件。
当我在另一个地方安装库并尝试使用它时,导入的项目只是空对象。
import { Item1, Item2 } from 'jsx-library'
console.log(Item1) // prints undefined
<Item1 />
最后一行得到错误Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.
有任何想法吗?谢谢。
解决方案
推荐阅读
- r - 如何在 data.table 的嵌套向量中应用函数?
- .net - 在 .NET/T-SQL 中有效地选择真实记录或虚拟/默认“记录”
- node.js - 在 NestJS 中的不同模块之间共享 TypeORM 连接
- jbpm - 使用 Spring Boot 切换到 jBPM 7 的 SQL Sever 数据库
- php - 是否可以将文字换行符(和其他文字字符)转换为 PHP_EOL 等?
- reactjs - 无法在 React 中打印多个表单输入数据
- rust - 错误 [E0308]:不匹配的类型 — 预期的 `&str`,找到结构 `std::string::String`
- java - 从 JSP 页面向数据库添加数据不起作用,但从 java 类完成时起作用
- netlogo - 计算和报告代理移动半径周围一定半径内的补丁土地租金
- postgresql - 使用 PL/pgsql 动态查询列出当前服务器中所有数据库中的所有外部服务器